Google Sheets中按分类统计含范围/列表格式的单元格数量
解决Google Sheets中分类字符串的数量统计问题
当然可以实现这个统计需求!我经常处理这类格式的字符串数据,结合Google Sheets的文本处理和数组函数就能轻松搞定,下面给你一步步拆解实现方法:
步骤1:提取分类名称
假设你的数据都在A列,首先我们需要把斜杠前的分类名称提取出来,放在B列。用LEFT+FIND组合公式就可以:
=LEFT(A1, FIND("/", A1) - 1)
把这个公式下拉应用到所有行,就能批量提取出每个单元格的分类(比如从"Apple/5"中得到"Apple")。
步骤2:计算单个单元格的实例数量
这是核心部分,我们需要根据斜杠后的内容类型(纯数字、数字范围、数字列表)分别计算数量,把结果放在C列。用嵌套的IF结合正则匹配和拆分函数就能实现:
=IFERROR( IF(REGEXMATCH(RIGHT(A1, LEN(A1)-FIND("/", A1)), "-"), --SPLIT(RIGHT(A1, LEN(A1)-FIND("/", A1)), "-")[[2]] - --SPLIT(RIGHT(A1, LEN(A1)-FIND("/", A1)), "-")[[1]] + 1, IF(REGEXMATCH(RIGHT(A1, LEN(A1)-FIND("/", A1)), ","), COUNTA(SPLIT(RIGHT(A1, LEN(A1)-FIND("/", A1)), ",")), --RIGHT(A1, LEN(A1)-FIND("/", A1)) ) ), 0 )
公式说明:
- 先用
RIGHT(A1, LEN(A1)-FIND("/", A1))提取斜杠后的内容; - 用
REGEXMATCH判断是否包含-:如果是数字范围(比如"2-3"),拆分出起始和结束数字,计算结束值-起始值+1得到实例总数(2到3对应2个实例); - 如果包含
,:说明是数字列表(比如"6,7,8"),拆分后用COUNTA统计元素个数,得到实例总数(3个); - 既没有
-也没有,:说明是纯数字(比如"5"),直接转成数值作为实例数; IFERROR用来处理格式异常的单元格,返回0避免报错。
步骤3:按分类汇总总数量
现在B列是分类,C列是每个单元格的实例数,接下来就可以用SUMIF或者QUERY函数汇总每个分类的总数量:
方法1:用SUMIF手动指定分类
比如在D2输入分类名称(如"Orange"),在E2输入公式:
=SUMIF(B:B, D2, C:C)
下拉公式就能得到每个分类的总数量。
方法2:用QUERY自动生成汇总表
如果想要自动生成所有分类的汇总,用QUERY函数更高效,在空白单元格(比如E1)输入:
=QUERY({B:C}, "select Col1, sum(Col2) where Col1 is not null group by Col1 label sum(Col2)'总数量'", 1)
这个公式会自动提取所有非空分类,计算每个分类的总实例数,还会生成表头。
测试示例
比如你的A列数据是:
- A1: Apple/5
- A2: Orange/2-3
- A3: Orange/6,7,8
那么B列会得到:
- B1: Apple
- B2: Orange
- B3: Orange
C列会得到:
- C1: 5
- C2: 2
- C3: 3
汇总后Orange的总数量是2+3=5,完全符合你的需求。
注意事项
- 确保斜杠后的内容格式规范:范围是
数字-数字,列表是数字,数字,不要有多余的空格或符号,否则正则匹配可能失效; - 如果需要处理带空格的情况,可以在拆分前用
TRIM函数清理,比如把SPLIT(..., "-")改成SPLIT(TRIM(...), "-")。
内容的提问来源于stack exchange,提问作者jyp95
相关产品推荐
相关产品推荐

