我查看了类似的问题,但找不到问题的确切解决方案。如果有重复的问题可以解决此问题,我将关闭此问题。
在单元格 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
答案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 页,其中不乏精彩内容,尽管其中一些是多年来以新功能形式提供给我们。