Excel如何自动填充日历:匹配月日数值填入对应项目ID
实现方案(Excel/WPS/Google Sheets通用)
以下方案默认使用如下数据结构,你可以根据实际表格的列位置调整公式内的列标:
- 项目表(
Sheet1):A列存储项目ID,B列存储对应项目的月份数字,C列存储对应项目的日期数字;若为跨日期项目,新增D列存结束日、E列存结束月即可- 日历表(
Sheet2):待填充项目ID的单元格对应行,F列存当前日历格的月份数字,G列存当前日历格的日期数字
场景1:单个项目仅对应单天日期(匹配你给出的示例场景)
方案1(优先选,最简单):365版本Excel/新版WPS用XLOOKUP多条件匹配
直接在Sheet2的待填充单元格输入如下公式,回车即可生效:
=XLOOKUP(1, (Sheet1!B:B=F2)*(Sheet1!C:C=G2), Sheet1!A:A, "无匹配项目")
公式逻辑:两个括号内分别校验月份、日期是否匹配,同时满足时返回对应行的项目ID,无匹配时返回自定义的提示文本。
方案2:旧版Excel兼容方案(INDEX+MATCH组合)
旧版Excel不支持XLOOKUP的情况下用这个公式,输入后按Ctrl+Shift+Enter作为数组公式生效:
=IFERROR(INDEX(Sheet1!A:A, MATCH(1, (Sheet1!B:B=F2)*(Sheet1!C:C=G2), 0)), "无匹配项目")
场景2:项目为跨日期范围,需要给所有落在起止月日内的日历格填充项目ID
用FILTER筛选匹配项目后拼接结果,支持同一天显示多个项目:
=TEXTJOIN("、", TRUE, FILTER(Sheet1!A:A, (Sheet1!B:B<=F2)*(Sheet1!E:E>=F2)*(Sheet1!C:C<=G2)*(Sheet1!D:D>=G2), "无匹配项目"))
注意事项
- 所有涉及月、日的单元格必须统一为纯数字格式,不要带“月”“日”等文本字符,否则会匹配失败
- 如果同个日期对应多个项目,TEXTJOIN会自动用指定分隔符拼接所有符合条件的项目ID,不会遗漏
内容的提问来源于stack exchange,提问作者emgee1010
相关产品推荐
相关产品推荐

