Google Sheets 提取带乘数条目并统计总出现次数
Google Sheets 带乘数前缀条目拆分统计方案
适用场景
A列存在两类条目数据:
- 纯条目名(如
G7、C55),代表该条目出现1次 - 空格分隔的带乘数前缀组合串(如
2xC55 1xG7),前缀Nx代表后缀条目出现N次
可通过以下原生公式自动完成拆分、去重、计数,不需要编写自定义脚本。
操作步骤
两个公式分别放在B1、C1单元格,支持自动溢出计算,后续A列新增数据会自动更新结果。
B列(提取不重复唯一条目)公式
=UNIQUE( ARRAYFORMULA( REGEXREPLACE( TOCOL(SPLIT(TOCOL(A:A,1)," ")), "^(\d+)x", "" ) ) )
C列(统计条目总出现次数)公式
=BYROW(B:B,LAMBDA(b, IF(b="",, REDUCE(0,TOCOL(A:A,1),LAMBDA(total,cell, LET( items,SPLIT(cell," "), total+SUM( BYCOL(items,LAMBDA(it, IF(REGEXMATCH(it,"^(\d+)x"&b&"$"),VALUE(REGEXEXTRACT(it,"^(\d+)x")), IF(it=b,1,0)) )) ) ) )) ) ))
公式逻辑说明
- 空值过滤:通过
TOCOL(A:A,1)自动剔除A列的空单元格,避免无效值参与计算 - 组合项拆分:用
SPLIT函数按空格分割每个单元格的内容,把2xC55 1xG7这类组合串拆成2xC55、1xG7两个独立单项 - 条目名提取:用正则
^(\d+)x匹配每个单项开头的乘数前缀,替换为空后得到纯条目名,再通过UNIQUE去重得到所有唯一条目 - 次数累加:遍历每个唯一条目,逐行匹配A列拆分后的所有单项:
- 单项为纯名称且和当前条目完全一致时,累加1次
- 单项带
Nx前缀且后缀和当前条目完全一致时,累加N次 - 不匹配的单项计0次
示例结果
使用测试数据,输出结果如下:
| colB | colC |
|---|---|
| G7 | 3 |
| C55 | 3 |
内容的提问来源于stack exchange,提问作者Mackenzie Fritschle
相关产品推荐
相关产品推荐

