Excel按指定日期匹配员工名单并输出匹配姓名
解决方案
Excel 365/2021 版本(推荐)
直接用动态数组函数组合实现需求。假设你要在AllNames表某日期行(比如第2行对应1月1日)的旁侧单元格(如Z2)输入公式:
=TEXTJOIN(", ", TRUE, FILTER(Employees!A:A, ISNUMBER(MATCH(Employees!A:A, AllNames!2:2, 0)), "-"))
公式说明:
MATCH(Employees!A:A, AllNames!2:2, 0):检测Employees表的每个姓名是否在当前日期行存在,存在返回位置值,不存在返回错误值ISNUMBER(...):将MATCH结果转为布尔值,匹配为TRUE,不匹配为FALSEFILTER(Employees!A:A, ..., "-"):筛选出匹配的姓名,无匹配时返回-TEXTJOIN(", ", TRUE, ...):用「逗号+空格」连接筛选出的姓名,TRUE参数忽略空值
输入后直接回车,下拉公式即可自动应用到所有日期行。
旧版Excel(不支持动态数组)
需使用数组公式,假设Employees表姓名范围为A2:A100(可根据实际人数调整),在AllNames表目标单元格输入:
=IFERROR(LEFT(CONCAT(IF(ISNUMBER(MATCH(Employees!$A$2:$A$100, AllNames!2:2, 0)), Employees!$A$2:$A$100&", ", "")), LEN(CONCAT(IF(ISNUMBER(MATCH(Employees!$A$2:$A$100, AllNames!2:2, 0)), Employees!$A$2:$A$100&", ", "")))-2), "-")
输入完成后必须按Ctrl+Shift+Enter作为数组公式确认(新版Excel可直接回车,旧版需按组合键)。
公式说明:
- 内层
IF:给匹配的姓名添加「逗号+空格」后缀,不匹配则返回空文本 CONCAT:拼接所有匹配的带后缀文本LEFT+LEN:去掉拼接字符串末尾多余的「逗号+空格」IFERROR:无匹配时返回-
注意事项
- 动态范围优化:把Employees表转成Excel表格(选数据区域→按Ctrl+T),公式会自动识别新增/删除的员工,不用手动调整范围
- 日期行对应:公式里的
AllNames!2:2要对应目标日期所在行,下拉时会自动适配每行的日期数据
内容的提问来源于stack exchange,提问作者Michael Cat
相关产品推荐
相关产品推荐

