Excel中MATCH&TEXTJOIN公式日期校验失效问题求助
问题分析与公式修正
你的公式问题出在TEXTJOIN的筛选逻辑和前面的MATCH校验完全脱节:MATCH确实做了日期+匹配C18的存在性检查,但后面TEXTJOIN的IF只判断了A列等于C18,完全没加入月份/年份的筛选条件,所以会提取所有和C18匹配的数据,而非限定P5年月的结果。
修正后的公式
1. 旧版Excel(需数组输入)
把日期校验条件整合到TEXTJOIN的IF判断里,同时统一单元格区域的行数(原公式A列是100000行,B列是10000行,会导致漏数据):
=TEXTJOIN(",",TRUE,IF((Tariff!$A$2:$A$100000=C18)*(Tariff!$D$2:$D$100000=MONTH($P$5))*(Tariff!$E$2:$E$100000=YEAR($P$5)),Tariff!$B$2:$B$100000,""))
输入完成后按 Ctrl+Shift+Enter 确认(数组公式要求)。
2. 新版Excel(365/2021,支持动态数组)
用FILTER函数更简洁,无需数组输入:
=TEXTJOIN(",",TRUE,FILTER(Tariff!$B$2:$B$100000,(Tariff!$A$2:$A$100000=C18)*(Tariff!$D$2:$D$100000=MONTH($P$5))*(Tariff!$E$2:$E$100000=YEAR($P$5)),""))
直接回车即可生效,没有匹配结果时会返回空文本。
核心修正点
- 将三个筛选条件(A列=C18、D列=P5月份、E列=P5年份)合并到提取逻辑中,确保只拉取符合所有条件的B列数据
- 统一数据区域的行数,避免因区域范围不一致导致的漏数或错误
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

