Google Sheets实现列唯一值提取及出现次数统计的公式
实现Google Sheets唯一值+对应出现次数的适配方案
优先使用QUERY函数的一步实现方案
QUERY自带分组聚合能力,完全不需要你之前拼接、拆分、转置的前置操作,单公式即可直接输出结构化的「唯一值-出现次数」两列结果,公式如下:=QUERY(C1:C98, "SELECT C, COUNT(C) WHERE C IS NOT NULL GROUP BY C LABEL C '唯一值', COUNT(C) '出现次数'", 1)
公式特性:
- 自动过滤C列空白单元格,不会把空值判定为独立统计分组
- 内置聚合逻辑一次性完成唯一值提取、计数两个步骤,无需嵌套其他辅助函数
- 支持通过LABEL子句自定义表头,输出结果可直接用于展示或后续计算
适配你现有横向唯一值列表的改造方案
你目前已经通过=TRANSPOSE(SPLIT(JOIN(",",UNIQUE(C1:C98)),","))生成了横向排布的唯一值序列,不需要推翻现有逻辑,搭配数组运算即可同步获取每个值的对应次数:
- 若唯一值已生成在第1行(从A1位置开始横向排列),直接在第2行对应位置输入公式:
=ARRAYFORMULA(COUNTIF($C$1:$C$98, A1:1)) - 此前你尝试用CONCATENATE无法实现批量操作的核心原因:CONCATENATE属于单值逐格运算的函数,不支持遍历数组内的每个元素做批量计算。用ARRAYFORMULA包裹COUNTIF后,会自动对横向排列的每个唯一值匹配计算出现次数,无需逐格下拉填充。
单公式输出带计数标注的合并列表
如果需要将唯一值和出现次数合并为单条展示文本(比如格式为橘子(5次)),可直接改造你原有拼接拆分的公式:=ARRAYFORMULA(TRANSPOSE(SPLIT(JOIN(",",UNIQUE(C1:C98)&"("&COUNTIF(C1:C98,UNIQUE(C1:C98))&"次)"),",")))
公式可直接生成纵向的带计数标注列表,无需单独拆分值与计数列。
实用注意事项
- 使用QUERY或COUNTIF统计时,若原始C列存在首尾空格、大小写不一致的同值文本,会被判定为不同的唯一值,建议先用TRIM、UPPER类函数做文本清洗后再统计
- 引用原始数据范围时一定要加绝对引用标记(
$C$1:$C$98),避免数组填充过程中引用范围发生偏移
内容的提问来源于stack exchange,提问作者Matt Allison
相关产品推荐
相关产品推荐

