加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2016-03-08 13:42:58)
标签:

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)}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有