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

如何用arrayformula提取单元格中带h后缀的数字并求和

解决方案:用ArrayFormula自动求和带h后缀的数字

针对你需要在Total列自动求和所有后缀为h的数字的需求,以下是适配区域设置(分号分隔公式参数、逗号作为小数分隔符)的ArrayFormula解决方案:

最终公式

=ARRAYFORMULA(
  IF(LEN(A2:A)=0; "";
    TEXT(
      MMULT(
        IFERROR(
          VALUE(REGEXEXTRACT(SPLIT(A2:A; " "); "^([0-9]+[,]?[0-9]*)h(,)?$"));
          0
        );
        SEQUENCE(COLUMNS(SPLIT(A2:A; " ")); 1; 1; 0)
      );
      "#,##0.0h"
    )
  )
)

公式拆解说明

  1. 拆分文本:SPLIT(A2:A; " ") 将每行文本按空格拆分为独立元素,方便逐个匹配带h的数值。
  2. 精准提取数值:REGEXEXTRACT(..., "^([0-9]+[,]?[0-9]*)h(,)?$") 用正则表达式精准匹配带h后缀的数值(支持逗号作为小数分隔符,同时处理h后带逗号的情况,如1,5h,),只提取数字部分。
  3. 转为数值类型:VALUE(...) 将提取的文本数字转换为可计算的数值,适配区域设置的逗号小数格式。
  4. 处理非匹配项:IFERROR(..., 0) 将不匹配的元素转为0,避免求和时出现错误。
  5. 每行求和:MMULT(..., SEQUENCE(...)) 通过矩阵乘法对每行的数值求和,SEQUENCE生成与拆分列数一致的全1列,确保每行元素相加得到总和。
  6. 格式化为目标样式:TEXT(..., "#,##0.0h") 将求和结果格式化为带h后缀的文本,保留1位小数(与示例中的4,5h、7,0h格式一致)。
  7. 空行处理:IF(LEN(A2:A)=0; ""; ...) 当A列为空时,返回空值,避免显示0h。

示例验证

将公式放入Total列的首行(如B2),会自动处理所有行:

  • 第一行Apples 1,5h, Banana 2x, Oranges 3h → 求和1,5+3=4,5 → 输出4,5h
  • 第二行5 Pears 1h, 2 Kiwis 1x, Melon 4h, 2h → 求和1+4+2=7 → 输出7,0h
  • 空行 → 返回空值
  • 第四行Stuff 1g, Stuff 2 1,5h, Stuff 3 2j → 求和1,5 → 输出1,5h

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:27:38