VBA如何在不循环的情况下添加单元格值

时间:2017-06-01 12:39:56

标签: excel vba excel-vba

我已经阅读了Application.WorksheetFunction.Sum,但我想知道是否有一个Range-object的特定方法或属性来完成这项工作。我已经调查了Range的成员,但我找不到任何东西。

有没有办法在不使用工作表功能的情况下添加?而且无需遍历每个单元格。类似的东西:

Sub test()
    Range("A1") = 1
    Range("A2") = 0
    Range("A3") = 2
    Range("A4") = Range("A1:A3").Add
    MsgBox Range("A4")
End Sub

输出3。

2 个答案:

答案 0 :(得分:2)

一般来说,还有第三种方法,你没有提到:

Application.Sum

它与WorksheetFunction.Sum略有不同,因为它更加离散 - 它不会抛出MsgBox的错误,即使它应该。 这样的事情只会导致MsgBox引发2个错误,你会在即时窗口中得到2个错误:

Option Explicit

Public Sub WaysOfSumming()

    'This is Div/0 Error:
    Range("A1").Formula = "=5/0"

    Debug.Print Excel.WorksheetFunction.Sum(Range("A1"), 3, 5)
    Debug.Print Application.Sum(Range("A1"), 3, 5)

    Debug.Print Excel.WorksheetFunction.Sum(Range("A1"), 3, 5)
    Debug.Print Application.Sum(Range("A1"), 3, 5)

End Sub

答案 1 :(得分:2)

继续,第四种方式:o)

evaluate(join(application.transpose(range("a1:a5").Value),"+"))