index函数
解析: 在一个范围内(如下图A2:C3),根据行列坐标(如下图第一行,第一列),返回单元格的值
match函数
解析: 参数列表如下,第一个参数即需要查找的a值,第二个参数为数组:即可以是一列(或者一行)中的一段范围,第三个参数为是否精准匹配(0为精准匹配,1为模糊匹配)。返回在这一段范围的位置。
=match(A2,A2:A3,0)
会返回 1。
举个栗子
将index 和match联合在一起使用
首先需要思考为啥能联合在一起使用,因为index是根据行列坐标去定位具体的某个单元格值。而match 恰好可以返回行号(或列号),再根据我们想要取的某列(或某行);
因此 index 函数就可以用match 返回的行号以及自己指定的列号,返回想要的单元格值。
需求一:根据sheet1 的第一列的值,去sheet2的第一列中查找能匹配上的一行,返回第四列。
在sheet1工作薄的D29单元格输入公式:
=index(sheet2!A29:D30,match(sheet1!A29,sheet2!A29:A30,0),4)
返回值为:d
公式及解析如下:
需求二:根据A、B、C列的值去匹配sheet2中的A,B,C列 返回D列
公式为:
=INDEX(sheet2!A29:D30,MATCH(sheet1!A29&sheet1!B29&sheet1!C29,sheet2!A29:A30&sheet2!B29:B30&sheet2!C29:C30,0),4)
注意:写完后,需要Ctrl + Shift+ enter,不然会显示#VALUE!
sheet1中查找成功并返回 “多列匹配”的单元格值。如下图。
需求三: 在 Sheet2 标签页中匹配当前行中的三个列值,如果存在返回判断结果
在excel中公式错误返回值 ERROR.TYPE 返回值有:
错误类型 | 错误类型代码 |
---|---|
#NULL! | 1 |
#DIV/0! | 2 |
#VALUE! | 3 |
#REF! | 4 |
#NAME? | 5 |
#NUM! | 6 |
#N/A | 7 |
公式:
=IF(ERROR.TYPE(MATCH(sheet1!A29&sheet1!B29&sheet1!C29,sheet2!A29:A30&sheet2!B29:B30&sheet2!C29:C30,0))=7,"未找到","存在")