【问题标题】:Excel formula to SUM all numbers in a cell with textExcel公式将单元格中的所有数字与文本相加
【发布时间】:2021-07-27 14:53:14
【问题描述】:

我的电子表格中有如下单元格:

RF(4);MN(4);LL(2);TE(4);HA(2)

有一个公式可以将字符串/单元格中的所有数字相加吗?

我可以通过 Office Script 尝试另一种方式,但由于他的速度较慢,而且我必须用这些类型的字符串对很多单元格行求和,我会尝试使用 Excel 公式尽可能加快这个过程.

最好的问候

【问题讨论】:

  • 他们总是个位数吗?

标签: excel excel-formula


【解决方案1】:

在 Excel 2013 及更高版本中,您可以使用 FILTERXML 提取数字并将其包装在 SUMPRODUCT 中以返回总和:

=SUMPRODUCT(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,")","</s><s>"),"(","</s><s>")&"</s></t>","//s[number()=.]"))

请注意,这在 Excel 在线或手机/平板电脑应用程序中不起作用。而且有些版本的mac也没有FILTERXML。


如果它们总是单个数字,我们可以使用:

=SUMPRODUCT(IFERROR(--MID(A1,SEQUENCE(LEN(A1)),1),0))

或旧版本:

=SUMPRODUCT(IFERROR(--MID(A1,ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1))),1),0))

对于某些版本,这需要在退出编辑模式时使用 Ctrl-Shift-Enter 而不是 Enter 以使其成为数组公式。

【讨论】:

    【解决方案2】:
    1. 您要做的是根据“;”分隔列
    2. Data --> Text to Columns --> Delimit / Next --> Semicolon --> Finish
    3. 这将根据您提供的数据将该列分为 5 列,现在您将添加 5 个额外的帮助列来提取数字。
    4. 假设您的新数据从A2:E2 向下移动,则将此公式放入F2:J2 =SUMPRODUCT(MID(0&amp;A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&amp;LEN(A2))), 1)) * ROW(INDIRECT("1:"&amp;LEN(A2))), 0), ROW(INDIRECT("1:"&amp;LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&amp;LEN(A2)))/10)
    5. 将此公式拖过 5 列后(将数字与文本分开);添加最后 1 列,将这 5 个新列相加。

    这应该能够处理一组括号中的多个数字。您可以通过将每列的公式加在一起来避免拥有所有其他列。我只是将其分解,因此如果有问题,您可以了解正在发生的事情及其工作方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      相关资源
      最近更新 更多