如何在Google Sheets中跨表按指定条件提取唯一行数据
Google Sheets按经理维度提取唯一值并统计的最优实现方案
假设你的数据源主表列结构为:A列=Manager、B列=Employee、C列=Project、D列=Date,已提取A列唯一经理姓名转置为当前表的列标题(比如B1、C1、D1分别为不同经理姓名)。
最优方案核心逻辑
用FILTER+UNIQUE+QUERY组合实现,无需手动下拉公式,结果自动向下溢出,性能远优于传统INDEX+SMALL数组公式。
需求1:提取对应经理的唯一Employee并统计出现次数
在对应经理列的首个空白行(比如B1是经理姓名,就在B2输入)输入公式:
=QUERY(UNIQUE(FILTER($B:$B,$A:$A=B$1)),"SELECT Col1, COUNT(Col1) WHERE Col1 IS NOT NULL GROUP BY Col1 LABEL Col1 '员工姓名', COUNT(Col1) '出现次数'",0)
如果数据源是其他工作表,修改列引用前缀即可,比如数据源表名为销售主表,就改成FILTER(销售主表!$B:$B,销售主表!$A:$A=B$1)。
需求2:提取对应经理的唯一Project并统计出现次数
修改FILTER的目标列即可,公式如下:
=QUERY(UNIQUE(FILTER($C:$C,$A:$A=B$1)),"SELECT Col1, COUNT(Col1) WHERE Col1 IS NOT NULL GROUP BY Col1 LABEL Col1 '项目名称', COUNT(Col1) '出现次数'",0)
合并输出员工+项目统计的方案
如果需要在同一经理列下先展示员工统计、再展示项目统计,用数组拼接公式即可:
={ QUERY(UNIQUE(FILTER($B:$B,$A:$A=B$1)),"SELECT Col1, COUNT(Col1) WHERE Col1 IS NOT NULL GROUP BY Col1 LABEL Col1 '维度', COUNT(Col1) '次数'",0); {"---","---"}; QUERY(UNIQUE(FILTER($C:$C,$A:$A=B$1)),"SELECT Col1, COUNT(Col1) WHERE Col1 IS NOT NULL GROUP BY Col1",0) }
原有公式失效原因
- 传统
INDEX+SMALL数组公式需要按Ctrl+Shift+Enter激活数组运算,否则只会返回单行结果 - 公式本身没有去重逻辑,会返回重复的员工/项目记录
- 当筛选结果行数小于当前行号时,会直接返回错误值,容错性低
内容的提问来源于stack exchange,提问作者usernametaken
相关产品推荐
相关产品推荐

