转载

标签: excel公式教程 if函数分类: Excel公式教程-函数篇

php数组实现ifIF函数数组变换详解 Bootstrap

大概很多人对VLOOKUP函数中套用IF({1,0},…)不理解。
本文为你阐发IF函数数组变换的事理。
如图:

一、选择区域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)}