Google Sheets单单元格合并重复条目并求和的公式实现
Google Sheets 合并重复条目并求和的动态实现方案
需求场景
A1单元格存储以下多行文本:
Apple – 1 Banana – 6 Cherry – 10 Peach – 100 Apple – 1000 Kiwi – 10999 Peach – 44 Fig – 3/100 Fig – 3/100
需要自动合并重复的水果条目,对对应数值求和后输出到B1单元格,预期结果:
Apple – 1001 Banana – 6 Cherry – 10 Peach – 144 Kiwi – 10999 Fig – 6/100
动态处理公式
直接在B1单元格输入以下公式即可完成所有条目的自动合并求和:
=TEXTJOIN(CHAR(10), TRUE, MAP( UNIQUE(ARRAYFORMULA(REGEXEXTRACT(SPLIT(A1, CHAR(10)), "(.*) – "))), LAMBDA(fruit, fruit & " – " & LET( fruit_rows, FILTER(SPLIT(A1, CHAR(10)), REGEXMATCH(SPLIT(A1, CHAR(10)), "^" & fruit & " – ")), is_fraction, REGEXMATCH(INDEX(fruit_rows, 1), " – [0-9]+/[0-9]+"), IF( is_fraction, SUM(VALUE(REGEXEXTRACT(fruit_rows, " – ([0-9]+)/"))) & "/" & REGEXEXTRACT(INDEX(fruit_rows, 1), "/([0-9]+)"), SUM(VALUE(REGEXEXTRACT(fruit_rows, " – ([0-9]+)"))) ) ) ) ) )
公式拆解
- 拆分与提取唯一名称:
UNIQUE(ARRAYFORMULA(REGEXEXTRACT(SPLIT(A1, CHAR(10)), "(.*) – ")))拆分A1的每行内容,提取所有不重复的水果名称。 - 遍历处理每个条目:用
MAP函数逐个遍历唯一水果名称,通过LAMBDA定义处理逻辑:- 筛选当前水果的所有行:
FILTER(SPLIT(A1, CHAR(10)), REGEXMATCH(SPLIT(A1, CHAR(10)), "^" & fruit & " – "))精准匹配当前水果的所有条目。 - 判断数值类型:检查当前水果的条目是否为分数格式,分别处理整数求和和分数求和(分子累加,分母保留原值)。
- 拼接结果:将水果名称、分隔符与求和后的数值组合成目标字符串。
- 筛选当前水果的所有行:
- 合并多行结果:
TEXTJOIN(CHAR(10), TRUE, ...)把所有处理后的字符串用换行符连接,输出为多行文本。
内容的提问来源于stack exchange,提问作者user2015253
相关产品推荐
相关产品推荐

