当前位置: 首页 > news >正文

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, "是", "否"), "")
http://www.dtcms.com/a/351999.html

相关文章:

  • 最简洁yolov8 C++配置教程
  • Leetcode+Java+dpI
  • 汇智焕彩,聚势创新 - openKylin 2.0 SP2正式发布!
  • 企业云办公安全指南:如何构建高效无忧的云办公环境?
  • 在Godot中为您的游戏添加并控制游戏角色的完整技术指南
  • 集成电路学习:什么是MobileNet
  • 在数据同步过程中,RustFS如何平衡RDMA的高吞吐和金融级数据校验的开销?
  • 深分页优化:高效解决方案全解析
  • golang7 数组切片
  • RocketMQ 消息存储机制-消息刷盘
  • TorchInductor - Autotune
  • 【牛客刷题】链表指定区间反转:两种高效解法详解,轻松掌握面试高频题!
  • 互联网医院品牌定位与差异化策略
  • 地下蚁国 全DLC(Empires of the Undergrowth)免安装中文版 在蚂蚁的世界里建立你的帝国
  • 马斯克的「巨硬」: MacroHard
  • 机器学习模型可解释库的介绍:Shapash (一)
  • TRO冻结卷土重来?Keith律所代理Ronald Kuang版权再维权
  • Spring Bean 生命周期高阶用法:从回调到框架级扩展
  • Android系统学习2——Android.Utils.Log模块讨论
  • Android 系统属性添加篇
  • StandardScaler()进行0,1标准化时fit_transform与transform的区别
  • MIME类型与文件上传漏洞 - 网络安全视角
  • 【Jetson】基于llama.cpp部署gpt-oss-20b(推理与GUI交互)
  • 多地闭店上热搜,中产的白月光无印良品怎么了?
  • 项目管理进阶——项目经理任职资格评定聘任及考核管理办法
  • 支持向量机(SVM)核心概念总结
  • Tensor常见操作
  • vscode使用cmake tool进行项目管理安装
  • Elasticsearch映射:优化搜索性能的关键
  • 【无标题】计数组合学7.21(有界部分大小的平面分拆)