Excel VBA汇总/添加值,即使是带有逗号/小数的值
我有个问题,我不能用小数加数字。只有没有小数的数字 我已经编写了一个代码来汇总来自不同单元格的值。只要数字没有小数,这项工作就行 这是我的密码:Excel VBA汇总/添加值,即使是带有逗号/小数的值,excel,vba,sum,decimal,cell,Excel,Vba,Sum,Decimal,Cell,我有个问题,我不能用小数加数字。只有没有小数的数字 我已经编写了一个代码来汇总来自不同单元格的值。只要数字没有小数,这项工作就行 这是我的密码: Sub SumValues() 'This makro is made to add values together depending on 'x amount of Sheets in the workbook: Application.ScreenUpdating = False 'A will sum up the values from
Sub SumValues()
'This makro is made to add values together depending on
'x amount of Sheets in the workbook:
Application.ScreenUpdating = False
'A will sum up the values from each cell,
'depending on the amount of Sheets in the this Workbook:
A = 0
For I = 1 To ThisWorkbook.Sheets.Count
'Adding the values from cell E5 to Cells(5, 5 + (I - 1) * 3),
'with the distance 3 between each cell:
A = A + Cells(5, 5 + (I - 1) * 3)
Next I
'The values A that is added togheter from the cells, is now put in a cell:
Worksheets("Sheet1").Cells(1, 1).Formula = "=" & A & ""
Application.ScreenUpdating = True
End Sub
所以对于3张纸,“I”从1变为3。
因此,如果我的单元格包含以下数字:
单元(5,5)=2
单元(5,8)=3
单元(5,11)=8
我在单元格(1,1)=13中得到总和
但如果我有这些价值观:
单元(5,5)=2,2
单元(5,8)=3
单元(5,11)=8
我在运行脚本时收到“运行时错误'9':下标超出范围”错误消息。
有什么建议吗
另一个问题是,是否有可能将公式放入我正在计算值的单元格中?
例如,如果我的工作簿中有3张工作表,它将汇总单元格(5,5)
、单元格(5,8)
和单元格(5,11)
中的值。
总和显示在单元格(1,1)
中。
但我得到的只是数字,不是公式。
是否可以使单元格显示公式“=E5+H5+K5
”?
最后一个问题可能是第一个问题的“修复”,如果是分隔符,“那可能是在制造麻烦?”
谢谢
姜饼经过测试,工作良好
声明变量
您需要使用工作表限定对象
无需在此处关闭屏幕更新
。您只需修改一个单元格
此代码将值
放入A1
中,将公式
放入B1
免责声明:
如果将非数值单元格输入到循环中,您的代码和下面的代码可能会出现类型不匹配错误
。如果有任何非数值单元格可能位于总和范围内,则可以通过在循环中嵌套以下内容来避免错误:如果是数值(范围),则
这工作完美!我以前没有“清除”过沃利斯。这通常是必要的?如果您想要可靠的代码,这总是必要的。查找选项显式的代码行
,并将其添加到您编写的每个代码中。它将迫使你声明变量,直到它成为习惯。阅读你的问题,你声明变量,而不是值。这里需要的变量正好存储值。其他变量存储字符串、对象属性或数组等。对VBA来说还是有点陌生,并且有很多东西需要学习:-)谢谢您的帮助!祝你有美好的一天!
Sub SumValues()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim A As Double, i As Long, Loc As String
For i = 1 To ThisWorkbook.Sheets.Count
A = A + ws.Cells(5, (5 + (i - 1) * 3))
Loc = ws.Cells(5, (5 + (i - 1) * 3)).Address(False, False) & "+" & Loc
Next i
ws.Range("A1") = A
ws.Range("B1").Formula = "=" & Mid(Loc, 1, Len(Loc) - 1)
End Sub