You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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]+)")))
        )
      )
    )
  )
)

公式拆解

  1. 拆分与提取唯一名称:UNIQUE(ARRAYFORMULA(REGEXEXTRACT(SPLIT(A1, CHAR(10)), "(.*) – "))) 拆分A1的每行内容,提取所有不重复的水果名称。
  2. 遍历处理每个条目:用MAP函数逐个遍历唯一水果名称,通过LAMBDA定义处理逻辑:
    • 筛选当前水果的所有行:FILTER(SPLIT(A1, CHAR(10)), REGEXMATCH(SPLIT(A1, CHAR(10)), "^" & fruit & " – ")) 精准匹配当前水果的所有条目。
    • 判断数值类型:检查当前水果的条目是否为分数格式,分别处理整数求和和分数求和(分子累加,分母保留原值)。
    • 拼接结果:将水果名称、分隔符与求和后的数值组合成目标字符串。
  3. 合并多行结果:TEXTJOIN(CHAR(10), TRUE, ...) 把所有处理后的字符串用换行符连接,输出为多行文本。

内容的提问来源于stack exchange,提问作者user2015253

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:38:30