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
Sie auch Arg3 als Variante und passieren einen Einzelzellbereich, wenn sie die Kriterien haben angeben können. Kriterien können True/False (= False), eine Zahl (20) oder eine Zeichenfolge ("> 100") sein.
Dim Arg3 As Variant 'the criteria
Arg3 = Sheets("Sheet2").Range("A2")
EDIT: Ich erkannte, was Sie versuchten zu tun. Jede Zelle in Arg3 ist ein separates Kriterium, das Sie SumIf ausführen möchten. Hier ist der überarbeitete Code.
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
Beachten Sie, wie Arg3 in SUMIFS Arg3.Cells(i - 1, 1).Value
verwendet wird. Beachten Sie auch, dass Arg1 und Arg2 dieselbe Größe haben müssen.
Ich versuchte die Lösung, aber es funktioniert nicht: Index außerhalb des Bereichs. Hast du irgendeine Idee? Vielen Dank im Voraus –
Sie müssen herausfinden, welche Linie und welches Element außerhalb der Reichweite ist. Haben Sie bereits eine Arbeitsmappe mit dem Namen "x.xlsx" geöffnet? Hast du ein "Blatt2"? usw. Der Code funktionierte gut für mich, also ist etwas anders. Wenn Sie es nicht herausfinden können, stellen Sie eine andere Frage. Ihr SumIf-Problem (Mismatch-Fehler) ist bereits gelöst. Jetzt fragen Sie nach einem Fehler außerhalb des zulässigen Bereichs. Das ist ein separates Problem und muss eine separate Frage sein. –
Ja, du hattest Recht. Ich habe einen Fehler gemacht, als ich den Code ausprobiert habe .. Jetzt versuche ich es nochmal mit mehr Aufmerksamkeit und es funktioniert .. Also vielen Dank! –