试图在vba中建立一个sumifs

时间:2018-06-07 16:59:45

标签: excel vba excel-vba

我目前正在尝试自学一些基本的excel vba,而且我被困在一个sumifs上。

我在同一个工作簿中有两个工作表(Sheet1和Sheet2)。 我试图让单元格1 D4:D20根据两个标准总结表2中的数据。第一个标准(Y)是可变的并存储在Sheet1 C4:C20中,而第二个标准是E.不幸的是,当我尝试计算最后一行时,我不断收到错误。 到目前为止我所拥有的是:

Sub Test_Sumifs()

Dim EndRow As Long
Dim i As Integer

EndRow = Cells(row.Count, "C").End(x1Up).row

Set SumRange = Worksheets("Sheet2").Range("D2:D17")
Set Criteria1 = Worksheets("Sheet2").Range("B2:B17")
Set Criteria2 = Worksheets("Sheet2").Range("C2:C17")

For i = 4 To EndRow
  Cells(i, 4).Value = WorksheetFunction.SumIfs(SumRange, Criteria1, [C4], Criteria2, ["E"])

Next i
End Sub

我环顾四周并尝试了各种方法,但无法弄清楚什么是错误的。

非常感谢您的帮助,

1 个答案:

答案 0 :(得分:2)

Option Explicit

Sub TestSumifs()

    Dim EndRow As Long
    Dim i As Long

    EndRow = Cells(Rows.Count, "C").End(xlUp).Row
    Dim sumRange As Range
    Dim criteria1 As Range, criteria2 As Range

    Set sumRange = Worksheets(2).Range("D2:D17")
    Set criteria1 = Worksheets(2).Range("B2:B17")
    Set criteria2 = Worksheets(2).Range("C2:C17")
    Dim wf As WorksheetFunction

    For i = 4 To EndRow
        Cells(i, 4) = wf.SumIfs(sumRange, criteria1, Range("C4"), criteria2, "E")
    Next i

End Sub
  • x1Up在VBA中确实不存在(Although there are 110 questions containing it。知道为什么以及如何?)
  • EndRow = Cells(Rows.Count, "C").End(xlUp).Row - 这会正确返回C的最后一行
  • Option Explicit - 强制声明变量