从字符串中提取数字并求和

从字符串中提取数字并求和

我查看了类似的问题,但找不到问题的确切解决方案。如果有重复的问题可以解决此问题,我将关闭此问题。

在单元格 A1 中我可以有一个字符串,它始终由数字、逗号、数字等组成。

可能有多个数字,始终用逗号分隔。

例如:

12,12,10,10

或者

12,12,1

在单元格 B1 中,我想对数字求和,这样我就会得到44或 的结果25

我怎样才能实现这个目标?

我唯一能想到的办法是使用“文本到列”,但这会破坏工作簿的结构,因为它需要使用更多列。我希望有一个公式,我可以直接输入到 B1 中,如果可能的话,拖下来。

答案1

我不知道该如何开始

  • 打开您的 Excel 文件。
  • 按 Alt-F11,VBA 编辑器窗口打开。
  • 在菜单中选择插入模块,将打开新的模块窗口。
  • 将以下代码插入模块窗口:

    Public Function ParseAndSum(source As String) As Integer
    Dim tmp() As String, i As Integer
    tmp = Split(source, ",")
    For i = LBound(tmp) To UBound(tmp)
        ParseAndSum = ParseAndSum + Val(tmp(i))
    Next i
    End Function
    
  • 关闭 VBA 编辑器。

  • 选择目标单元格(例如 B1)。
  • 按下“功能”旋钮(fx),功能主窗口打开。
  • 选择“用户定义函数”类别,选择ParseAndSum函数,单击下一步。
  • 单击源单元格(A1),其地址插入到“源”字段。
  • 单击“确定”。

就这样。

PS. 不要忘记在 Excel 偏好设置中启用宏执行。

答案2

这可以通过公式完成:

=SUMPRODUCT(--TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99)))

这将对其进行分割,并迭代各部分并对其进行求和。

在此处输入图片描述

答案3

另一种方法以及传统的解答方法是利用“旧”Excel 4 宏集中的命令。

您必须在命名范围(或宏)中使用这些命令,但通常人们正在寻求非宏解决方案。

这个解决方案有两个方面。第一点是如何完成基本工作:

(您的数据在单元格 A1 中,而结果将位于单元格 B1 中,正如要求的那样)

设置一个命名范围(可能称为“结果”)。为其提供公式:

=EVALUATE(SUBSTITUTE(A1,",","+"))

然后在单元格 B1 中的公式中使用命名范围:=Result

在公式中,SUBSTITUTE() 通常用于将逗号替换为加号,以便 EVALUATE() 正常工作。EVALUATE() 是 Excel 4 宏命令,其作用就是:计算它可以识别为公式的任何内容(这就是逗号需要替换的原因)。

它必须在命名范围内使用的原因有点神秘。它们不会直接在电子表格的单元格中工作。它们将在实际宏中工作。因此,我们的想法是,命名范围必须被 Excel 视为宏的一个版本(当然是“精简版”),其工作由宏引擎而不是工作表计算引擎完成。

第二个方面是如何让公式引用“我想要结果的单元格左侧的单元格”......

选择单元格 A2,然后输入上述公式。输入公式(复制粘贴、键入,随便您喜欢什么)并保存。建立命名范围后检查公式,确保单元格引用没有“$”(您想要“A1”,而不是任何版本的“$A$1”)。

一切就绪。现在,在工作表中的任何地方,“=Result”都将引用其左侧的单元格。因此,将其复制到 B 列或任何可能有用的位置,它将作用于其左侧单元格的内容。

您确实必须正确完成第二部分,但这很容易,是吗?

搜索 Excel 4 宏命令,您将找到完整的手册,大约 600 页,其中不乏精彩内容,尽管其中一些是多年来以新功能形式提供给我们。

相关内容