如何在Google Sheets中引用单元格使用COUNTUNIQUEIFS实现双条件统计
问题描述
我有三个工作表:
工作表1:EVENTS(存储活动全部信息)
| EVENT | TYPES | BRANDS |
|---|---|---|
| 1 | 3 | B1;B2;B3;B7 |
工作表2:EVENTS AND BRANDS
| EVENT | BRAND |
|---|---|
| 1 | B1 |
| 1 | B2 |
| 1 | B3 |
| 1 | B7 |
工作表3:BRANDS AND TYPE OF BRAND
| BRAND | TYPE |
|---|---|
| B1 | 1 |
| B2 | 2 |
| B3 | 3 |
| B7 | 1 |
需求
- 在工作表1的
TYPES列编写公式,用COUNTUNIQUEIFS逻辑统计工作表3中TYPE列的唯一值数量,仅统计工作表2中与当前行EVENT匹配的BRAND对应的TYPE。 - 在工作表1的
BRANDS列生成对应活动的所有品牌,支持芯片格式或逗号分隔。单个品牌时我会用BUSCARV([EVENT];SHEET 2;2;FALSE),但多品牌场景不知如何实现。
我试过Stack Overflow上的方案,但该方案未引用动态单元格,直接指定固定值,无法适配我的多品牌多活动场景,因此无效。
解决方案
需求1:统计唯一TYPE数量
在工作表1的TYPES列对应行(如EVENT=1所在的B2单元格),使用以下公式:
=COUNTUNIQUE(FILTER('BRANDS AND TYPE OF BRAND'!$B:$B, 'BRANDS AND TYPE OF BRAND'!$A:$A IN FILTER('EVENTS AND BRANDS'!$B:$B, 'EVENTS AND BRANDS'!$A:$A=A2)))
若你的Google Sheets版本不支持IN运算符,可改用MATCH实现:
=COUNTUNIQUE(FILTER('BRANDS AND TYPE OF BRAND'!$B:$B, ISNUMBER(MATCH('BRANDS AND TYPE OF BRAND'!$A:$A, FILTER('EVENTS AND BRANDS'!$B:$B, 'EVENTS AND BRANDS'!$A:$A=A2), 0))))
公式逻辑:
- 内层
FILTER:先从工作表2中筛选出与当前行EVENT(A2)匹配的所有品牌 - 外层
FILTER:基于筛选出的品牌列表,在工作表3中匹配对应的TYPE COUNTUNIQUE:统计这些TYPE的唯一值数量
需求2:生成活动对应的所有品牌
逗号分隔格式
在工作表1的BRANDS列对应行(如C2单元格),使用TEXTJOIN函数:
=TEXTJOIN(";", TRUE, FILTER('EVENTS AND BRANDS'!$B:$B, 'EVENTS AND BRANDS'!$A:$A=A2))
芯片格式(可点击的标签样式)
- 在对应单元格输入公式生成品牌数组:
=TOCOL(FILTER('EVENTS AND BRANDS'!$B:$B, 'EVENTS AND BRANDS'!$A:$A=A2), 1)
- 选中该单元格,右键选择「设置单元格格式」→「芯片」,选择合适样式即可
公式逻辑:
TEXTJOIN:将筛选出的品牌用指定分隔符(此处为分号;)拼接成字符串,TRUE参数用于忽略空值TOCOL:将筛选结果转换为单列数组,配合芯片格式实现标签化显示
内容的提问来源于stack exchange,提问作者Multimedia LC
相关产品推荐
相关产品推荐

