Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2651|回复: 4

[已解决]计算包含文本数值的代码

[复制链接]
发表于 2014-5-20 12:41 | 显示全部楼层 |阅读模式
一列中有纯数值,也有包含单位的数值,如:100,23,23m,45m,234m,
用代码计算所有数值的和
用代码计算仅包含单位的和

谢谢!
最佳答案
2014-5-20 12:56
  1. Sub demo()
  2.     Dim arr
  3.     Dim lSum1&, lsum2&, i&
  4.     arr = Range("a1").CurrentRegion
  5.     For i = 1 To UBound(arr)
  6.        If IsNumeric(arr(i, 1)) Then lSum1 = lSum1 + arr(i, 1)
  7.        If Not IsNumeric(arr(i, 1)) Then lsum2 = lsum2 + Val(arr(i, 1))
  8.     Next
  9.     MsgBox lSum1 & vbCr & lsum2
  10. End Sub

  11. Sub demo2()
  12.     On Error Resume Next
  13.     Dim rg As Range, lsum2&
  14.     MsgBox Application.WorksheetFunction.Sum(Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, xlNumbers))
  15.     For Each rg In Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, xlTextValues)
  16.         lsum2 = lsum2 + Val(rg.Value)
  17.     Next
  18.     MsgBox lsum2
  19. End Sub
复制代码
发表于 2014-5-20 12:52 | 显示全部楼层
QQ截图20140520125219.jpg

QQ截图20140520125209.jpg

评分

参与人数 1 +3 收起 理由
hcy1185 + 3 很给力!请版主把代码贴上,我复制一下,谢谢!

查看全部评分

回复

使用道具 举报

发表于 2014-5-20 12:56 | 显示全部楼层    本楼为最佳答案   
  1. Sub demo()
  2.     Dim arr
  3.     Dim lSum1&, lsum2&, i&
  4.     arr = Range("a1").CurrentRegion
  5.     For i = 1 To UBound(arr)
  6.        If IsNumeric(arr(i, 1)) Then lSum1 = lSum1 + arr(i, 1)
  7.        If Not IsNumeric(arr(i, 1)) Then lsum2 = lsum2 + Val(arr(i, 1))
  8.     Next
  9.     MsgBox lSum1 & vbCr & lsum2
  10. End Sub

  11. Sub demo2()
  12.     On Error Resume Next
  13.     Dim rg As Range, lsum2&
  14.     MsgBox Application.WorksheetFunction.Sum(Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, xlNumbers))
  15.     For Each rg In Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, xlTextValues)
  16.         lsum2 = lsum2 + Val(rg.Value)
  17.     Next
  18.     MsgBox lsum2
  19. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
hcy1185 + 3 赞一个!谢版主!列数据是数值型的,用第一个过.

查看全部评分

回复

使用道具 举报

发表于 2014-5-20 12:57 | 显示全部楼层
单元格内数字如果以文本方式保存,两个过程的结果会有出入。
回复

使用道具 举报

发表于 2014-5-20 13:03 | 显示全部楼层
本帖最后由 开心妙妙 于 2014-5-20 13:09 编辑

[
  1. Sub AA()
  2.     Dim Arr, a%, i%, st%, b%
  3.     Arr = Range("A1").CurrentRegion
  4.     For i = 1 To UBound(Arr)
  5.         If VBA.IsNumeric(Arr(i, 1)) Then
  6.             a = a + Arr(i, 1)
  7.         Else
  8.             st = Val(VBA.Replace(Arr(i, 1), "m", ""))
  9.             b = b + st
  10.         End If
  11.     Next i
  12.     MsgBox "数值的和:" & a & Chr(10) & "含单位的和:" & b
  13. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
hcy1185 + 3 赞一个!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-23 15:07 , Processed in 0.362372 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表