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