快速统计文本数字之和

32 篇文章 1 订阅
6 篇文章 0 订阅

实例需求: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的一些功能,那么就可以事半功倍,虽然本文标题是统计数字之和,但是计算计算这些数字的乘积,也可以使用同样的方法,大家可以灵活变通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值