You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel多条件统计唯一值(含逗号分隔列表匹配)

Excel统计符合条件的唯一公司数量问题

问题背景

现有数据结构:

  • A列:Yes/No 标识
  • B列:公司名称
  • C列:所在城市
  • D列:逗号分隔的所属行业列表

需统计同时满足以下条件的唯一公司名称数量:

  • A列值为"Yes"
  • C列等于指定城市(如"Mycity")
  • D列的行业列表包含指定行业(如"IndustryName")

尝试以下公式未得到预期结果:

=SUM(IF(FREQUENCY(IF((A2:A100="Yes")*(C2:C100="Mycity")*(ISNUMBER(SEARCH("IndustryName", D2:D100))),
 MATCH(B2:B100,B2:B100,0)),ROW(B2:B100)-ROW(B2)+1),1)) 

优化解法

解法1:Excel 365/2021 动态数组公式(推荐)

利用动态数组函数组合,逻辑清晰易维护:

=COUNTA(UNIQUE(FILTER(B2:B100,(A2:A100="Yes")*(C2:C100="Mycity")*(ISNUMBER(SEARCH("IndustryName",D2:D100))))))
  • 步骤拆解:
    1. FILTER:筛选出所有符合三个条件的公司名称
    2. UNIQUE:对筛选结果去重,保留唯一公司名
    3. COUNTA:统计去重后的公司数量
  • 优势:无需手动按数组快捷键,空结果自动返回0,可读性强

解法2:兼容旧版Excel的数组公式

若使用不支持动态数组的旧版Excel,修正原公式逻辑后,按Ctrl+Shift+Enter输入:

=SUM(--(FREQUENCY(IF((A2:A100="Yes")*(C2:C100="Mycity")*(ISNUMBER(SEARCH("IndustryName",D2:D100))),MATCH(B2:B100,B2:B100,0)),ROW(B2:B100)-ROW(B2)+1)>0))
  • 修正说明:原公式中IF(...,1)的逻辑有误,改为--(FREQUENCY(...)>0),确保仅对首次出现的唯一公司计数
  • 原理:FREQUENCY会将重复公司的匹配位置归为同一组,仅首次出现的位置返回非零值,通过>0判断后转成数值,求和得到唯一数量

额外注意点

  • 若需区分行业名称大小写,将SEARCH替换为FIND
  • 若D列行业存在空格(如"IT, 金融"),可优化匹配逻辑避免部分误匹配:
    ISNUMBER(SEARCH(", "&"IndustryName"&", ", ", "&D2:D100&", "))
    
    该写法会给行业列表首尾加逗号,确保匹配的是完整的行业项。

内容的提问来源于stack exchange,提问作者CatiS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:20:14