实例需求:A列到F列为文本数据,每个单元格中包含3个数字,数字之间使用竖线分隔,现需要计算每个单元格中的数字之后。
例如F15单元格内容为10┃5┃18,则需要计算10、5、18三个数字之和,结果为33,写入单元格M15,如下图所示。

这个数据还算规范,使用统一的分隔符(竖线),通常的实现思路是使用split拆分数组,再逐个累加,对于本示例来说,数字个数不多,这样处理效率也还不错。
但是更高效的方法是利用Evaluate快速计算公式结果,示例代码如下。
Sub demo()
Set rngData = [a1].CurrentRegion
arrData = rngData.Value
For iRow = 1 To UBound(arrData)
For iCol = 1 To UBound(arrData, 2)
txt = arrData(iRow, iCol)
If Len(txt) > 0 Then arrData(iRow, iCol) = Application.Evaluate(Replace(txt, "┃", "+"))
Next iCol
Next iRow
rngData.Offset(0, 7).Value = arrData
End Sub
【代码解析】
第2行代码获取数据单元格区域。
第3行代码将数据内容读取到数组中。
第4~9行代码循环处理数组中的数据。
第6行代码读取数组(单元格)的数据。
第7行代码判断单元格内容是否为空,如果为空,那么使用Replace将竖线替换为加号,然后调用Evaluate计算表达式(相当于公式)的值。
第10行代码将计算写过回写到H列到M列对应的单元格中。
本示例并不复杂,实现方法有很多种,大家如果可以充分利用Excel VBA的一些功能,那么就可以事半功倍,虽然本文标题是统计数字之和,但是计算计算这些数字的乘积,也可以使用同样的方法,大家可以灵活变通。



![[附源码]计算机毕业设计学生在线考试系统Springboot程序](https://img-blog.csdnimg.cn/1479dbe3f3e647c5a95dbacaae94cedc.png)
![[附源码]计算机毕业设计颐养天年辅助平台Springboot程序](https://img-blog.csdnimg.cn/e45f0e7b4ac64fc48d380ea1a3f31e33.png)
![[附源码]JAVA毕业设计健康生活网站(系统+LW)](https://img-blog.csdnimg.cn/ce41462a6e3e46d4b29545590a4a8a1f.png)




![[附源码]计算机毕业设计医学图像管理平台Springboot程序](https://img-blog.csdnimg.cn/514aa1ff70e8426fb0fa680dffeca99b.png)

![[附源码]计算机毕业设计springboot在线项目管理](https://img-blog.csdnimg.cn/338aef8c718c42a7940d52db96767bca.png)






