在Excel中查找满足多商品同时售卖条件的日期
查找同时售出指定多商品的日期
需求说明
A列是日期,B列是当日售出的商品,要找出当天卖过所有指定商品的日期。举几个例子:
- 指定
Boneless Breast、Pork Loin、Chuck Roast,结果是1/1/2023和1/3/2023 - 再加
Hotdogs的话,没有符合的日期 - 只指定前两个商品,三个日期全符合
手动筛选、字段拼接或者加一堆辅助列的方法,改条件的时候太麻烦,得找个扩展性强的解法。
原始数据:
| 日期 | 商品 |
|---|---|
| 1/1/2023 | Boneless Breast |
| 1/1/2023 | Pork Loin |
| 1/1/2023 | Chuck Roast |
| 1/2/2023 | Boneless Breast |
| 1/2/2023 | Pork Loin |
| 1/2/2023 | Hotdogs |
| 1/3/2023 | Boneless Breast |
| 1/3/2023 | Pork Loin |
| 1/3/2023 | Chuck Roast |
高效解法(Excel 365/2021 适用)
不用加任何辅助列,一个动态数组公式搞定,条件数量随便加:
第一步:放筛选条件
找个空白列(比如D列),把要筛选的商品列出来,比如D1到D3:
Boneless Breast Pork Loin Chuck Roast
第二步:用公式出结果
在任意空白单元格(比如F1)输入下面的公式,直接返回所有符合条件的日期:
=UNIQUE(FILTER(UNIQUE(A:A), SUMPRODUCT(COUNTIFS(A:A, UNIQUE(A:A), B:B, D:D))=COUNTA(D:D)))
公式逻辑拆解:
UNIQUE(A:A)先提取所有不重复的日期COUNTIFS(A:A, UNIQUE(A:A), B:B, D:D)统计每个日期里,每个指定商品的售出次数SUMPRODUCT把每个日期的统计结果求和,若结果等于指定商品的总数,说明当天所有指定商品都卖过了FILTER+UNIQUE最终筛选并去重得到符合条件的日期
新手友好版公式(逻辑更直观)
如果想逐个日期验证匹配情况,也可以用这个公式:
=UNIQUE(FILTER(A:A, BYROW(UNIQUE(A:A), LAMBDA(dt, SUM(--ISNUMBER(XMATCH(D:D, FILTER(B:B, A:A=dt)))))=COUNTA(D:D))))
这个公式会先提取单日期的所有售出商品,再逐一核对指定商品是否全部存在,全匹配才判定为符合条件。
方案优势
- 无需辅助列,修改条件仅需在指定区域增删商品即可
- 不受商品售卖顺序影响,只要当日全品类覆盖就会被筛选
- 动态数组自动更新,数据或条件变动后结果实时同步
内容的提问来源于stack exchange,提问作者user2152954
相关产品推荐
相关产品推荐

