预备知识
match index 和vlookup函数 和双条件查找匹配
1.vlookup函数用法
=VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
参数1:你要查找的值;
参数2:在那个区域进行查找
参数3:最终结果位于参数2的第几列
参数4:键入0,表示精确查找,键入1,表示模糊查找
vlookup、hlookup、lookup函数的用法和三者的区别
Vlookup和Hlookup函数的区别就在于它们的第一个参数:
V是Vertical的的第一个字母,垂直方向,Vlookup表示垂直方向查找
H是Horizontal的第一个字母,水平方向,Hlookup表示水平方向查找。
二者的语法除了查找方向外,其他完全相同
LOOKUP(lookup_value, lookup_vector, [result_vector])
2.match和index
match函数用法,index函数用法,用match和index函数实现vlookup功能
match函数用法
MATCH(lookup-value,lookup-array,match-type) (返回指定内容所在的位置)
参数1:表示要在区域或数组中查找的值,可以是直接输入的数组或单元格引用
参数2:表示可能包含所要查找的数值的连续单元格区域,应为数组或数组引用
参数3:表示查找方式,用于指定精确查找或模糊查找。取值为1,0 。其中0为精确查找,1为模糊查找
index函数用法
INDEX(array,row-num,column-num) (返回制定位置中的内容)
参数1:要返回值的单元格区域或数组
参数2:返回值所在的行号
参数3:返回值所在的列号
双条件查找
https://jingyan.baidu.com/article/fd8044faf87ea55031137af6.html
{=VLOOKUP(A2&B2,IF({1,0},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12),2,FALSE)}
请注意,如上的公式是数组公式,输入的方法是,先输入
=VLOOKUP(A2&B2,IF({1,0},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12),2,FALSE) 之后,再按新Ctrl+Shift+Enter组合键,才会出现大括号。大括号是通过组合键按出的,不是通过键盘输入的。
公式解释:
①VLOOKUP的解释
VLOOKUP函数,使用中文描述语法,可以这样来理解。
VLOOKUP(查找值,在哪里找,找到了返回第几列的数据,逻辑值),其中,逻辑值为True或False。
A2&B2相当于要查找的值。等同于A2和B2两个内容连接起来所构成的结果。所以为A2&B2,理解为A2合上B2的意思。
IF({1,0},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12)相当于要查找的数据
2代表返回第二列的数据。最后一个是False。
②IF({1,0}的解释
IF({1,0},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12)相当于VLOOKUP函数中的查找数据的范围。
由于本例子的功能是,根据Sheet1中的A列数据和B列数据,两个条件,去Sheet2中查找首先找到对应的AB两列的数据,如果一致,就返回C列的单价。
因此,数据查找范围也必须是Sheet2中的AB两列,这样才能被找到,由于查找数据的条件是A2&B2两个单元格的内容,但是此二单元格又是独立的,因此,要想构造查找范围,也必须把Sheet2中的AB两列结合起来,那就构成了Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BB$12;
Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BB$12:相当于AB两列数据组成一列数据。
那么,前面的IF({1,0}代表什么意思呢?
IF({1,0},相当于IF({True,False},用来构造查找范围的数据的。最后的Sheet2!$CC$12也是数据范围。
现在,整个IF({1,0},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12)区域,就形成了一个数组,里面存放两列数据。
第一列是Sheet2AB两列数据的结合,第二列数据是Sheet2!$CC$12。
公式{=VLOOKUP(A2&B2,IF({1,0},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12),2,FALSE)}中的数字2,代表的是返回数据区域中的第二列数据。结果刚好就是Sheet2的C列,即第三列。因为在IF({1,0}公式中,Sheet2中的AB两列,已经被合并成为一列了,所以,Sheet2中的第三列C列,自然就成为序列2的列编号了,所以,完整的公式中,红色的2代表的就是要返回第几列的数据。
上面的完整的公式,可以使用如下两种公式来替代:
=VLOOKUP(A2&B2,CHOOSE({1,2},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12),2,FALSE)
=VLOOKUP(A2&B2,IF({TRUE,FALSE},Sheet2!$AAKaTeX parse error: Expected 'EOF', got '&' at position 3: 12&̲Sheet2!BBCC$12),2,FA
任务一
用vlookup函数 查找以下公司的companyId | companyFullName | |:----| | 上海云贝网络科技有限公司 | | 携程计算机技术(上海)有限公司 | | 浙江康健绿线网络技术有限公司 | | 久亿财富(北京)投资有限公司 | | 杭州木瓜科技有限公司 | | 思特沃克软件技术(成都)有限公司 | | 北京金山云网络技术有限公司 |
任务二
用match和index函数实现第一题的功能
任务三
用match和index函数查找以下id对应的公司名称,注意id是横向排列的| companyId | 127200 | 151079 | 22225 | |----|----|----|----|
任务四
请根据companyId和postionId两个条件查找对应的工资水平| companyId | positionId | salary | |:----|:----|:----| | 62 | 938038 | | | 1575 | 1157620 | | | 157392 | 2574696 | |
请思考,是否会存在相同的公司id和职位di对应多种工资水平,如果有请查找出来。 并思考,如果存在多种的情况,目前的公式还能不能用?
注意:先输入数组表达式,最后进行运算是:用ctrl+shift+enter,才会出现{ }这个符号。
参数1:条件1与上条件2,共同构成条件,也就是告诉我们要去寻找那些问题的答案。
参数2:if({1,0})照写就成,随后的$部分,表示在那个区域进行寻找。
参数3:我们答案位于选中区域的第几列,显然这个题目的salary位于第二列。
参数4:0表示,精确查找。