Excel多列数据处理:筛选指定状态任务并提取最早日期对应客户名
解决方案:筛选"book in now!"状态并找到最早日期对应的客户名称
嘿,这个需求我熟!给你两个在Excel里实现的实用方案,看你平时更习惯用公式还是可视化操作:
方案1:用公式直接计算(适合快速单次查询)
最直接的组合公式是用 INDEX+MATCH+MINIFS,一步到位得到结果:
=INDEX(A:A, MATCH(MINIFS(B:B, C:C, "book in now!"), B:B, 0))
公式拆解:
MINIFS(B:B, C:C, "book in now!"):先从B列(暂定服务日期)里筛选出所有C列(服务最终状态)为"book in now!"的日期,然后取其中最小的那个(也就是最早的日期)。MATCH(..., B:B, 0):在B列里精准定位这个最早日期所在的行号。INDEX(A:A, ...):根据找到的行号,返回A列(客户名称)对应的内容。
特殊情况处理:
如果有多个客户的日期都是最早的,上面的公式只会返回第一个出现的客户。要是想把所有符合条件的客户都列出来,可以用数组公式(新版Excel直接回车,旧版需要按Ctrl+Shift+Enter):
=TEXTJOIN(", ", TRUE, IF((B:B=MINIFS(B:B,C:C,"book in now!"))*(C:C="book in now!"),A:A,""))
这个公式会用逗号分隔所有符合条件的客户名称。
方案2:用Power Query处理(适合数据量大或需频繁更新的场景)
如果你的数据经常变动,或者行数很多,用Power Query更省心,步骤也很直观:
- 选中你的数据区域,点击「数据」选项卡 → 「从表格/区域」(记得勾选“我的表格有标题”)。
- 在Power Query编辑器里,点击C列的筛选按钮,只勾选"book in now!",点击确定。
- 点击B列的排序按钮,选择「升序」,这样最早的日期会自动排在第一行。
- 点击「主页」选项卡 → 「保持行」→ 「保留首行」。
- 最后点击「关闭并上载」,就能得到你要的客户名称了。之后数据更新时,只要右键点击结果表格选择「刷新」,就能自动更新结果。
内容的提问来源于stack exchange,提问作者Eleanor Dangerfield
相关产品推荐
相关产品推荐

