关于IF函数的应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
甚至还可以把“两地分居”的两个数据源合并成一个内存数组进行VLOOKUP查询: 数据源1: 姓名 张三丰 李四光 王麻子 赵六儿 查询: 工号 KT001 表四 工资 3200 2800 2600 2200 数据源2,见“snahngyu实例”工作表的表一。
姓名 张三丰
工资 3200
左侧,就能使用VLOOKUP查询了
2, 多列查询 查询: 工号 KT002
姓名 李四光
性别 女
籍贯 天津
出生年月 1980/9/1
C44单元格中的公式是:=VLOOKUP(B44,IF({1,1,1,1,0},shangyu实例!C9:F12,shangyu实例!B9:B12),5,0) {1,1,1,1,0}是一个一列5行的常量数组,而后面红色部分有四列,蓝色部份一列, 通过IF({},,)的变换,就形成了这样一个新的内存数组: 工号 性别 籍贯 出生年月 姓名 男 北京 1970年8月 张三丰 KT001
KT002
李四光 女 天津 1980/9/1 在这个公式里,直接把查询值所在数列和返回值所在数列整合成一个新的两列多行内存数组。
CHOOSE还可以这样用: 工号 KT002 姓名 李四光 性别 女 籍贯 天津 出生年月 1980/9/1
如果定义成名称,看起来就更直观了。
CHOOSE函数还可以任意组合: 比如: =CHOOSE({1,2,3,4,5},F73:F76,B73:B76,D73:D76,C73:C76,E73:E76) 就可以得到: 工号 姓名 籍贯 性别 出生年月
当然,这个查询公式并没有什么实用价值,因为【工号】栏本来就在【性别】【籍贯】【出生年月】的左 只是用这个例子来说明数组变换。
3, 如果【工号】在最后一列,还有一个更简单的查询方法 数据源: 姓名 张三丰 李四光 王麻子 赵六儿 查询: 工号 KT002 表三 性别 男 女 男 女 籍贯 北京 天津 河北 河南 出生年月 1970年8月 1980年9月 1975年3月 1985年12月 工号 KT001 KT002 KT003 KT004
KT002 KT003 KT004
女 男 女
天津 河北 河南
1980年9月 1975年3月 1985年12月
李四光 王麻子 赵六儿
在使用这个内存数组时,要注意各字段的位置。如【姓名】在内存数组的第5列,所以C44的公式是: =VLOOKUP(B44,IF({1,1,1,1,0},shangyu实例!C9:F12,shangyu实例!B9:B12),5 ,0)
籍贯ห้องสมุดไป่ตู้
出生年月
籍贯
出生年月
工号
出生年月
籍贯
工号
变换的规律是:{}中的常量数组四个元素对应IF函数的Value_if_true的四个数列, 其中0所在位置,被Value_if_false 对应的数列所替换
CHOOSE变换: 与IF变换相比,CHOOSE变换更简单、灵活: 工号 姓名 性别 籍贯 出生年月
姓名 李四光
性别 女
籍贯 天津
出生年月 1980/9/1
更多的IF变换: 在表三中,数据源的字段排列是: 姓名
性别
籍贯
出生年月
工号
通过以下不同变换,在内存中可以得到不同的字段排列 =IF({0,1,1,1},B73:E76,F73:F76) 工号 性别 =IF({1,0,1,1},B73:E76,F73:F76) 姓名 工号 =IF({1,1,0,1},B73:E76,F73:F76) 姓名 性别 =IF({1,1,1,0},B73:E76,F73:F76) 姓名 性别
张三丰 李四光 KT001 KT002 男 女 北京 天津 1970年8月 1980年9月
王麻子 KT003 男 河北 1975年3月
在这样的数据表中,用HLOOKUP也只能从【姓名】查询【工号】。要想从【工号】查【姓名】,仍然可以用 查询: 工号 姓名 KT002 李四光
=HLOOKUP(C31,IF({1;0},C24:F24,C23:F23),2,0) 注意:这里有一个细微的变化:以前我们用的是{1,0},而现在用的是{1;0} 之所以把逗号改为分号,是因为后面的两个数列是水平数组,而{1;0}是一个一列两行的垂直 这样作的结果得到一个新的两行多列的数组: KT001 KT002 KT003 KT004 张三丰 李四光 王麻子 赵六儿
】查【姓名】,仍然可以用数组变换的方法:
0}是一个一列两行的垂直数组。
hangyu实例!B9:B12),5,0)
,所以C44的公式是: 例!B9:B12),5 ,0)
【籍贯】【出生年月】的左侧,不需要变换也能直接查找
多行内存数组。
就更直观了。
我们知道,这样的公式:VLOOKUP(C1,IF({1,0},A1:A10,B1:B10,2,0)可以实现从右向左查询 但是其中的IF{1,0}的原理却常常引起初学者的疑惑。 其实shangyu版主早在名为《查找函数之VLOOKUP》的经典帖子中,已经解释得很清楚了。 点击原帖链接 下面给出的就是原帖中关于这个问题的节选: 点击链接 在这里shangyu版主指出:{1,0}是一个一行两列的横向水平数组。 IF({1,0},数列1,数列2)这一公式产生了新的一行两列数组:{数列2,数列1} 姓名 张三丰 李四光 王麻子 赵六儿 工号 KT001 KT002 KT003 KT004 工号 KT001 KT002 KT003 KT004 姓名 张三丰 李四光 王麻子 赵六儿
=>IF({1,0},C12:C15,B12:B15)=>
原来的数组(B,C列)无法实现从右向左查询,而变换后的数组把查找值换到了左侧,就能使用VLOOKUP查询 这样的数组变换还有很多变化,可以找到更多的用途。
1, 在HLOOKUP中的运用 数据源: 姓名 工号 性别 籍贯 出生年月 表二 赵六儿 KT004 女 河南 1985年12月