Google Sheets Dashboard:多选服务条件统计查询方案求助
解决方案:Google Sheets 多服务统计(按月份+客户过滤,排除0数量)
核心公式(Dashboard工作表A8单元格)
假设原始数据存储在名为数据的工作表中,列对应关系为:A列=月份,B列=客户名称,C列=服务(单个单元格含多项服务,用顿号分隔),将以下公式粘贴到A8:
=LET( 原始数据, 数据!A:C, 目标月份, Dashboard!B2, 目标客户, Dashboard!D3, 所有服务, UNIQUE(FLATTEN(SPLIT(INDEX(原始数据,,3), "、"))), 统计结果, MAP(所有服务, LAMBDA(服务, COUNTIFS( INDEX(原始数据,,1), 目标月份, INDEX(原始数据,,2), IF(目标客户="", "<>", 目标客户), INDEX(原始数据,,3), "*"&服务&"*" ) )), 过滤结果, FILTER(HSTACK(所有服务, 统计结果), 统计结果>0), IFERROR(过滤结果, "无匹配数据") )
公式说明
LET:定义变量简化公式,避免重复引用数据区域FLATTEN(SPLIT(...)):拆分每个单元格中的多项服务为单独条目,再扁平化得到所有服务的集合UNIQUE:提取不重复的服务列表,确保每个服务只统计一次MAP+COUNTIFS:遍历每个服务,统计同时满足目标月份、目标客户(为空时匹配所有客户)、服务单元格包含当前服务的记录数FILTER:自动过滤掉数量为0的服务条目IFERROR:当无匹配数据时返回友好提示
关键调整点
- 分隔符适配:如果你的服务用逗号、分号等分隔,将公式中的
"、"替换为对应的符号(如",") - 月份格式统一:确保
数据表中月份的格式与Dashboard!B2的格式完全一致(比如都是文本格式的"2025年2月",或统一为日期格式) - 空白客户逻辑:若希望客户下拉为空时统计所有客户,公式中
IF(目标客户="", "<>", 目标客户)的<>表示匹配所有非空客户;若要包含空客户,可改为TRUE
为什么Query+CountIf组合失效?
Query函数对单个单元格内的多值数据处理能力有限,无法直接实现"包含某服务"的模糊匹配统计。而先拆分服务再逐个统计的方式,能更精准地处理多服务单元格的场景。
内容的提问来源于stack exchange,提问作者ghaida mohammed
相关产品推荐
相关产品推荐

