IF函数数组变换详解_Excel公式教程

标签:
excel公式教程if函数 |
分类: Excel公式教程-函数篇 |
也许很多人对VLOOKUP函数中套用IF({1,0},…)不理解。本文为你剖析IF函数数组变换的原理。如图:
http://s7/mw690/0067PPKnty6ZX16Xhk2c6&690
一、选择区域G1:H4,输入以下数组公式,可实现A、B列位置互换:
{=IF({1,0},B1:B4,A1:A4)}
{=IF({0,1},A1:A4,B1:B4)}
公式返回{"B1","A1";"B2","A2";"B3","A3";"B4","A4"}。
怎么理解这个数组公式呢?
要弄懂这个数组公式,需要先掌握数组公式的基础知识——数组运算和数组扩展。请参阅以下两篇文章:
数组运算:http://blog.sina.com.cn/s/blog_14e89401f0102wc4n.html
数组扩展:http://blog.sina.com.cn/s/blog_14e89401f0102wc5x.html
下面以第一个数组公式为例进行解释。
IF函数的第一个参数{1,0}是一个单行两列的数组常量,有两个元素;而第二、第三个参数都是四行单列的数组。进行数组扩展后,三个参数都变成四行两列的数组,各有8个元素:
第一个参数扩展后变成{1,0;1,0;1,0;1,0}
第二个参数扩展后变成{"B1","B1";"B2","B2";"B3","B3";"B4","B4"}
第三个参数扩展后变成{"A1","A1";"A2","A2";"A3","A3";"A4","A4"}
于是我们可以确定:这个数组公式需要重复计算8次,并返回一个四行两列的数组。
第一次计算分别取三个参数的第一个元素,组成普通公式=IF(1,"B1","A1"),根据数值类型自动转换规律,1被转换为逻辑值TRUE,所以计算结果为"B1",该结果为返回的数组中第一行第一列的值;
第二次计算分别取三个参数的第二个元素,组成普通公式=IF(0,"B1","A1"),根据数值类型自动转换规律,0被转换为逻辑值FALSE,所以计算结果为"A1",该结果为返回的数组中第一行第二列的值;
第三次计算分别取三个参数的第三个元素,组成普通公式=IF(1,"B2","A2"),计算结果为"B2",该结果为返回的数组中第二行第一列的值;
如此类推。数组公式的结果如图中G1:H4所示。
二、选择区域H1:J4,输入以下数组公式,可将第二个参数中的某列用第三个参数取代:
{=IF({0,1,1},A1:C4,E1:E4)}
公式返回{"E1","B1","C1";"E2","B2","C2";"E3","B3","C3";"E4","B4","C4"}
{=IF({1,0,1},A1:C4,E1:E4)}
公式返回{"A1","E1","C1";"A2","E2","C2";"A3","E3","C3";"A4","E4","C4"}
{=IF({1,1,0},A1:C4,E1:E4)}
公式返回{"A1","B1","E1";"A2","B2","E2";"A3","B3","E3";"A4","B4","E4"}
三、选择区域G1:H2,输入以下数组公式,可实现交错替换列:
{=IF({0,1;1,0},A1:A2,B1:B2)}
公式返回{"B1","A1";"A2","B2"}
由于在同一维度上因大小不同而进行的扩展,将以#N/A值填充,如果要生成四行,需要写成:
{=IF({0,1;1,0;0,1;1,0},A1:A4,B1:B4)}
如果行数多,第一个参数继续使用数组常量的话,就需要输入相同数量的行,显然这样做是不可能的。需要把数组常量改为隐式数组,我们可以改用以下数组公式:
{=IF(MOD(ROW(A1:A4),2)-{1,0},A1:A4,B1:B4)}