if函数的数组用法

今天来说一下if函数的数组用法,主要是让你了解函数中数组运算的对应关系,学会后你就可以举一反三,运用到其他函数中。当然并不是所有函数的数组运算关系都是一样的,但大多数是一样的。

1.求产品A最后一次的生产日期

A列是生产日期,B列的产品是用随机函数=MID("AB",RANDBETWEEN(1,2),1)生成的,按F9时会变化。在D2单元格中输入公式=MAX(IF(B2:B9="A",A2:A9,0)),按ctrl+shift+enter三键。意思就是B列的每个产品是否等于A,等于A的返回对应的生产日期,否则返回0,形成一个数组。最后用max取最大值,就是我们想要的日期。

下面说下它的运算原理,if函数的第1参数B2:B9="A"是个数组,第2参数A2:A9是个数组,第3参数为0。实际上是一维数组与单值的运算。

第一参数如C列所示,是一个由逻辑值构成的数组,第2参数如D列所示,实际就是A列的日期,第3参数为0,可以将其看作一列,如E列所示。这样就是3个一维数组的运算,一一对应。如果第1参数是true,就返回第2参数;如果第1参数是false,就返回第3参数。结果还是个一维数组,如F列所示。最后用max对F列的结果取最大值。

如果你对上面的原理不理解,也没关系。你可以像下图一样,分步计算。先添加一个辅助列,在C2单元格中输入公式=IF(B2="A",A2,0),然后向下填充。可以看到它的结果,等于A的返回对应的日期,否则返回0。如果用要数组,就是把公式中的B2改为B2:B9,A2改为A2:B9。

2.求产品A第一次的生产日期

在D24单元格中输入公式=MIN(IF(B24:B31="A",A24:A31)),按ctrl+shift+enter三键。此时将最大值max改为最小值min,但是if函数的第3参数忽略,和昨天的条件求平均是一样的用法。当然也可以把if的第3参数写为空""。数组运算方式和上面一样,不再说明。

下面换一种思路,实际是一个向左查询的问题,而且还是查第一个出现的值,可以用vlookup。在D25单元格中输入公式=VLOOKUP("A",IF({1,0},B24:B31,A24:A31),2,0)。这里关键的部分就是if函数,它将B列和A列的位置对调,这样vlookup才能正确查询出来。

那么重点来了,if函数是怎么将B列和A列的位置对调的呢?下面我们看下它的运算原理。第1参数{1,0}是个横向一维数组,相当于{true,false};第2参数B24:B31和第3参数A24:A31是2个一维纵向数组,所以它们的运算方式是一维横向数组与一维纵向数组的运算。

如下图所示,1代表true,0代表false。第1参数成立时返回第2参数,不成立时,返回第3参数。由于是方向不同的一维数组,所以结果会形成二维数组。这样就把B列和A列的位置对调了。

其实,你可以把每个参数都看作是一个二维数组,这样它们的关系就是一一对应的。第1参数如果成立,返回对应的第2参数;如果不成立,返回对应的第3参数。

不知道你明白了没有,如果你明白了,那么其他函数的数组用法你也能明白。你还想学哪个函数,可以投票。

(0)

相关推荐