https://msdn.microsoft.com/en-us/library/office/ff193011.aspx
Sub test()
Dim Arg1 As Range 'the range i want to sum
Dim Arg2 As Range 'criteria range
Dim Arg3 As Variant 'the criteria
'Arg1 and Arg2 must be the same size
Set Arg1 = Sheets("Sheet1").Range("B2:B100")
Set Arg2 = Sheets("Sheet1").Range("C2:C100")
'this is the criteria
Arg3 = "=False"
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Integer
For i = 2 To 12
ws.Cells(i, 8).Value = Application.WorksheetFunction.SumIfs(Arg1, Arg2, Arg3)
Next
End Sub
还可以指定ARG3作为变体,并通过单小区范围,如果它具有标准。标准可以是True/False(= False),数字(20)或字符串(“> 100”)。
Dim Arg3 As Variant 'the criteria
Arg3 = Sheets("Sheet2").Range("A2")
编辑:我意识到你正在尝试做什么。 Arg3中的每个单元格都是一个单独的标准,您要执行SumIf。这是修改后的代码。
Sub test2()
Dim ThisWB As Workbook: Set ThisWB = ThisWorkbook
Dim i As Integer
Dim LastColumn As Integer: LastColumn = 3
Dim Arg1 As Range 'the range i want to sum
Dim Arg2 As Range 'criteria range
Dim Arg3 As Range 'the criteria (range)
Set Arg1 = ThisWB.Sheets("Sheet1").Range("B2:B100")
Set Arg2 = ThisWB.Sheets("Sheet1").Range("C2:C100")
Set Arg3 = ThisWB.Sheets("Sheet2").Range("A2:A12")
For i = 2 To 12
Workbooks("x.xlsx").Worksheets("Sheet2").Cells(i, LastColumn) _
= Application.WorksheetFunction.SumIfs(Arg1, Arg2, Arg3.Cells(i - 1, 1).Value)
Next
End Sub
请注意在SumIfs Arg3.Cells(i - 1, 1).Value
中如何使用Arg3。另请注意,Arg1和Arg2必须具有相同的大小。
我尝试了溶剂化,但它不起作用:下标超出范围。你有什么主意吗?预先感谢您 –
您需要找出哪条线和哪个项目超出范围。你真的有一个名为“x.xlsx”的工作簿已经打开吗?你有“Sheet2”吗?等代码工作得很好,所以有些不同。如果你不能解决问题另一个问题。你的SumIf问题(不匹配错误)已经解决了。现在您正在询问超出范围的错误;这是一个单独的问题,需要成为一个单独的问题。 –
是的,你是对的。我在尝试代码时犯了一个错误。现在我再次尝试一次,注意力更强,它正在工作。所以非常感谢! –