Google Sheets如何统计含逗号分隔多值列的唯一值出现次数
Google Sheets 单元格内逗号分隔多值拆分计数方案
你之前直接使用=UNIQUE(A2:A)无法得到正确结果,核心原因是该公式会将每个单元格的完整内容作为单个统计单元,没有先对单元格内按逗号分隔的多值做拆分处理,以下两种方案均可以在Google Sheets原生环境下实现需求,不需要依赖外部Python环境。
方案1:零代码原生公式(推荐,适配绝大多数场景)
直接在空白列的起始单元格输入以下公式,回车后会自动输出所有唯一值及对应出现次数:
=QUERY( FLATTEN(SPLIT(A2:A, ", ")), "SELECT Col1, COUNT(Col1) WHERE Col1 IS NOT NULL GROUP BY Col1 LABEL Col1 '统计值', COUNT(Col1) '出现次数'" )
公式逻辑说明:
SPLIT(A2:A, ", "):按照「英文逗号+空格」的规则,把每个单元格内的多值拆分为独立列FLATTEN():将拆分后分散在多列的所有值合并为单列,完成所有拆分值的归集QUERY():对归集后的单列值做分组统计,自动过滤空值、去重后计算每个值的出现次数
用你提供的示例数据运行该公式,输出结果完全匹配预期:
- A example:3次
- B example:1次
- C example:2次
- D example:2次
- E example:1次
- F example:1次
- G example:1次
提示:如果你的数据里逗号后面没有空格,把SPLIT里的分隔符从
", "改成","即可正常识别。
方案2:自定义函数(适合万行以上大数据量场景)
如果数据量较大导致原生公式计算卡顿,可以用Google Sheets内置的Apps Script写自定义统计函数,步骤如下:
- 点击表格顶部菜单栏「扩展程序」→「Apps Script」,打开脚本编辑器
- 清空编辑器内默认的占位代码,粘贴以下代码:
function COUNT_SPLIT_VALUES(range, delimiter = ", ") { const countRes = {}; range.flat().forEach(cellContent => { if (!cellContent) return; cellContent.toString() .split(delimiter) .map(item => item.trim()) .forEach(validItem => { if (!validItem) return; countRes[validItem] = (countRes[validItem] || 0) + 1; }) }) return [["统计值", "出现次数"], ...Object.entries(countRes)]; }
- 点击编辑器顶部的保存按钮,按提示给脚本授权后回到表格界面
- 在空白单元格输入公式
=COUNT_SPLIT_VALUES(A2:A),回车即可直接输出统计结果;如果是无空格的逗号分隔,用=COUNT_SPLIT_VALUES(A2:A, ",")即可。
内容的提问来源于stack exchange,提问作者amatur
相关产品推荐
相关产品推荐

