Excel如何精确匹配行列字段,不使用vlookup

作者:追风筝的人 | 创建时间: 2023-06-21
有时候,我们需要从另一个张表中匹配获取本表中没有的字段,Excel提供了一个函数:vlookup(hlookup),这个函数有个坏处,你无法向左匹配,就是说,你要获取的列,必须在待匹配列的右边。这篇将使用两外两个函数,实现更精确的匹配功能。...
Excel如何精确匹配行列字段,不使用vlookup

需求分析

假设有一张表如下图所示,共有800多名人员信息。

而你所需要的,仅仅是填充下面的表:

基础学习

先学习两个函数: match( val, arr, n ) match函数,有三个参数,他返回 val所指定的值在 arr 数组中所在的位置索引,如果val不在arr中,则返回N/A,n表示匹配模式,一般传递0值,表示精确匹配。 例如: match( "c", { "a", "b", "c", "d" }, 0 ) 它的计算结果是3,因为 “c”在数组{"a","b","c","d"}中排在第三位。 如下图:

index( arr, ind ) index函数返回在arr数组中第ind个元素的值。 比如: index( {"a","b","c","d", 3 } 它的计算结果是 c,因为第三个元素就是"c"。如下图:

实际运用

以那个需求表为例,填充数据可以使用下面的公式: =INDEX(Sheet2!B:B,MATCH($B3,Sheet2!$A:$A,0)) 公式原理: match返回B3单元格的值(名字)在sheet2表A列(也是名字,但作为一个数组来看)所在的位置索引,实际就是看”曹操“这个名字在整个sheet2表中的A列中在第几行。 然后index返回B列的第几行(match的计算结果)。如下图:

填充公式: 一下就可以得到整个结果,如下图:

温馨提示

使用这种方法,没有vlookup的待匹配列的左右限制。
不需要vlookup那样数距离待匹配列的列跨度。
一定要注意,待匹配的列,和你要找的值,格式必须一致,比如你用数字去查找文本是找不到的,反过来也一样。
如果待匹配的列中有重复,返回第一个找到的。
点击展开全文

更多推荐