IF({1,0}
这种表述是数组条件,等于IF({true,false},其它数例如2也可以表示true,只有0表示FALSE
=VLOOKUP(B15,IF({0,1},A1:A10,C1:C10)),这个函数还少了一个列号
=VLOOKUP(B15,IF({0,1},A1:A10,C1:C10),1)
IF({0,1},A1:A10,C1:C10),其实等于第1列C1:C10,第2列是A1:A10
IF({0,0},A1:A10,C1:C10),其实等于第1列C1:C10,第2列是C1:C10
IF({1,0},A1:A10,C1:C10),其实等于第1列A1:A10,第2列是C1:C10
IF({1,1},A1:A10,C1:C10),其实等于第1列A1:A10,第2列是A1:A10
if({0,1},A1:A10,C1:C10) 应该是这样一个意思
首先if函数从{0,1}数组中取第一个元素0做判断条件,自然取c1:c10数组,然后取第二个元素1做判断条件,自然取A1:A10这样形成了一个二维数组第一列是c1:c10,第二列是a1:a10,然后成为了vlookup 的lookarray了,只是这个函数少了两个参数
数组嵌套的函数,需逐层分析。
先从vlookup层面分析。vlookup第二个参数应该是个table(区域),这里就是整条IF()。可见IF()的用意是给vlookup返回一个10行2列的区域。
第二层分析IF()。显然这里的操作是用IF()数组方法对A和C列进行重新操作。{0,1}是1行2列数组,A1:A10是10行1列数组,同理C1:C10也是10行1列数组。由于维度不相同无法对比,excel系统会自动把{0,1}和A1:A10和C1:C10都分别扩充到相同的10行2列数组,生成的结果也是10行2列(自己脑补excel里面10行2列单元格的画面)。
就是,{0,1}会扩充到{0,1;0,1;0,1……}这里的分号表示一行,共10行;
A1:A10会扩充到{A1,A1;A2,A2;A3,A3;……}就是第一行2个A1,第二行2个A2……
同理C列也是这样扩充。
计算时,第一次计算输出结果在第一行第一个单元格,=if(0,A1,C1),显然计算结果是C1。
第二次计算输出结果在第一行第二个单元格,=if(1,A1,C1),计算结果是A1。
第三次计算输出结果在第二行第一个单元格,=if(0,A2,C2),计算结果是C2.
最终显示出来是:
(C1,A1) ---第一行
(C2,A2)---第二行
(C3,A3)---第三行
……
看到这里,你可以看到IF()数组的这个操作是将A列和C列的值调换,然后将调换后的区域作为table_array返回给vlookup函数。