编按: 详细讲解IF函数的{1,0}结构的原理和用法。会灵活使用该结构的都是高手。 凡是做过反向查找的人,对IF函数的{1,0}(或者{1;0}结构都不陌生:它可以交换两列(或两行)数据。(图中效果, Excel 2021版本以下的,可以先选中D2:E9,然后输入公式,最后按Ctrl+Shift+Enter三键结束。)但是,它的原理是什么?它只能写成{1,0}吗?它有哪些用法?用到两个原理,IF函数自身的取值逻辑和数组运算逻辑。 条件为真,逻辑值就是TRUE,常用1表示;条件为假,逻辑值就是FALSE,常用0表示。 取值逻辑:当条件为真,在第二参数中取值;当条件为假,在第三参数中取值。譬如:公式=IF(1,5,10),结果是5;公式=IF(0,5,10),结果是10。 (1)数组运算要求行列一一对应。 如果两个数组行列不对应,会自动扩展,无法自动扩展的,缺失的部分将得到错误值。(2)数组运算的结果也是一个数组。 其行数等于参与运算的数组的最大行,其列数等于参与运算的数组的最大列。 譬如,有如下两个数组。数组1:B17:C20,数组2:D17:E20,都是2列4行。用数组2-数组1,结果也是2列4行的数组。用数组2的第1列减去数组1的第1列;数组2的第2列减去数组1的第2列;彼此是对应相减的,不会出现第2列减去第1列。行也是如此。这就是数组按行列一一对应运算。如果运算的数组无法一一对应,单列单行数组可以自动按需进行复制扩展。譬如,下方数组3只有单列,当用数组4减去它,其结果与数组6减去数组5的一样,说明数组3自动复制了一列出来。非单列单行数组无法自动复制扩展,缺少对应的行列运算时会出现错误值。譬如下方数组8有4行3列,而数组7只有4行2列,它们的结果应是4行3列的数组。因为数组7无法自动复制扩展,所以前方两列相减结果正常,第3列则得到错误值。用公式=IF({1,0},C3:C6,B3:B6)交换下方数组A和B。条件{1,0}是一行两列的数组;数组A和B都是4行1列的数组。它们的结果应该是4行两列。(1)首先3个数组都按数组规则自动扩展,都变成4行2列。条件数组第1列第1行是1,条件为真,所以在TRUE结果数组B中取第1列第1行的值;条件数组第2列第1行是0,条件为假,所以在FALSE结果数组A中取第2列第1行的值。变化1:交换1和0的位置,如IF({0,1}……) 相比{1,0},{0,1}的结果第一列是FALSE中的第一列。变化2: 可以是多个1或者0的数字,如IF({1,1,0}……)条件中的第1个1,位于第1列,条件为真,所以在TRUE结果中找第1列;条件中的第2个1,位于第2列,条件为真,所以在TRUE结果中找第2列;条件中的0,位于第3列,条件为假,所以在FALSE结果中找第3列。变化3: 可以是任何数字,如IF({-1,2,0}……)在Excel中,数字0表示FALSE,其他数字都能代表TRUE。变化4:可以是公式结果,如IF(MOD(COLUMN(A1:C1),3)……)把嵌套的公式结果作为条件。譬如MOD(COLUMN(A1:C1),3),实际等于{1,2,0}。=MAX(IF(($A$2:$A$10=$A14)*($B$2:$B$10=$B14),INDEX($C$2:$H$10,,MATCH(C$13,$C$1:$H$1,0))))
|