我目前正在尝试自学一些基本的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
我环顾四周并尝试了各种方法,但无法弄清楚什么是错误的。
非常感谢您的帮助,
答案 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
- 强制声明变量