Excel跨sheet检索提取信息
需要在另一个sheet中检索是否有需要的信息并做处理,比如sheet1是本班名单,sheet2是全校名单,需要在全校名单里找到这个人并把相关的信息复制过来或根据相关信息打标签
基础功能
sheet1空表需要填写人员信息,sheet2中有这些人的信息,但两个sheet中人员排序不一样,也不能确定两个sheet中所有人是一样的。需要检索sheet2中是否有这些人,如果找到了这个人,就把某一列的数据复制到sheet1的空格中。
这个需求可以用Excel中的 VLOOKUP
或者 XLOOKUP
(Excel 365/Excel 2019及以上版本支持)来实现。推荐用XLOOKUP
。
假设:
- 你在 Sheet1 里,A列是人员姓名,B列是你要填写的某列数据;
- Sheet2 中,A列是人员姓名,B列是对应的数据列(你要复制的数据);
方法1:用 VLOOKUP
在 Sheet1 的 B2 单元格写公式:
=IFERROR(VLOOKUP(A2, Sheet2!$A$2:$B$1000, 2, FALSE), "")
解释:
A2
是你要查找的人员姓名;Sheet2!$A$2:$B$1000
是你在Sheet2中包含姓名和对应数据的区域(根据实际数据范围调整);2
表示返回区域中的第2列数据;FALSE
表示精确匹配;IFERROR(...,"")
是防止查不到时显示错误,改为空白。
然后往下拖公式即可。
方法2:用 XLOOKUP(更灵活)
=IFERROR(XLOOKUP(A2, Sheet2!$A$2:$A$1000, Sheet2!$B$2:$B$1000, ""), "")
解释:
A2
查找值;Sheet2!$A$2:$A$1000
查找范围(人员姓名列);Sheet2!$B$2:$B$1000
返回对应值的范围;""
找不到时返回空白。
人名有空格
在sheet2的人员姓名中,有时需要忽略空格。比如sheet1中写的是“张三”,sheet2中写的是“张 三”。
原公式是:
=IFERROR(XLOOKUP(A2, Sheet2!$A$2:$A$1000, Sheet2!$B$2:$B$1000, ""), "")
要求忽略姓名中的空格,即匹配时去掉两边字符串的所有空格。
直接修改XLOOKUP公式,结合SUBSTITUTE
去除空格:
=IFERROR(XLOOKUP(SUBSTITUTE(A2, " ", ""), SUBSTITUTE(Sheet2!$A$2:$A$1000, " ", ""), Sheet2!$B$2:$B$1000, ""),
"")
说明:
SUBSTITUTE(A2, " ", "")
:去掉A2
中的所有空格;SUBSTITUTE(Sheet2!$A$2:$A$1000, " ", "")
:对Sheet2人员姓名列去除所有空格后进行匹配;- 这样匹配时会忽略姓名中的空格差异;
IFERROR(...,"")
避免没匹配到显示错误。
另一个sheet中是否有要查的人并做标签
在 Sheet1 中判断某个人是否在 Sheet4 的名单中出现,如果出现就显示“是”,否则为空。
假设:
- Sheet1 中人员姓名在 A 列,比如 A2;
- Sheet4 中名单在 A 列,范围是 A2:A1000。
推荐公式如下(忽略空格,确保姓名一致性)
=IF(ISNUMBER(MATCH(SUBSTITUTE(A2," ",""), SUBSTITUTE(Sheet4!$A$2:$A$1000," ",""), 0)), "是", "")
SUBSTITUTE(A2," ","")
:去除Sheet1中姓名空格;SUBSTITUTE(Sheet4!$A$2:$A$1000," ","")
:去除Sheet4中名单姓名空格;MATCH(..., ..., 0)
:精确匹配,返回匹配的行号,找不到返回错误;ISNUMBER(...)
:判断是否找到匹配(是否返回数字);IF(..., "是", "")
:如果找到,显示“是”,否则空白。
如果不需要忽略空格,直接简单写:
=IF(ISNUMBER(MATCH(A2, Sheet4!$A$2:$A$1000, 0)), "是", "")
在 Sheet1 对应的列填入上述公式,往下拖拽即可完成批量判断。
另一个sheet中是否有要查的人且需要将对应的标签转换
在sheet2中的F列有一列人名,然后需要在J列填写统计信息(比如“是”“否”)。对照sheet1中D列的人名,如果有这个人,则找到该人名所在行的W列,如果该单元格为1,则在sheet2的J列相应位置填“是”,如果为0则填“否”。
假设从第2行开始,在 Sheet2 的 J2 输入以下公式,然后向下填充:
=IF(XLOOKUP(F2, Sheet1!$D:$D, Sheet1!$W:$W, 0, 0)=1, "是", "否")
说明:
F2
:Sheet2 中要查找的名称。Sheet1!$D:$D
:在 Sheet1 中用于匹配名称的查找列。Sheet1!$W:$W
:在 Sheet1 中返回 1/0 值的列。- 第四个参数 0 是 XLOOKUP 在未找到时返回的默认值(也可以改为 “” 或其他值)。
- 第五个参数 0 指定精确匹配(与 MATCH 的 0 等效)。
上面的公式没有找到也会显示“否”。
如果希望找不到时显示空白而不是“否”,可以改为:
=LET(v, XLOOKUP(F2, Sheet1!$D:$D, Sheet1!$W:$W, ""), IF(v="", "", IF(v=1, "是", "否")))
或者
=IFERROR(IF(XLOOKUP(F2, Sheet1!$D:$D, Sheet1!$W:$W, NA())=1, "是", "否"), "")