ich habe eine Datei mit 2 Tabellen:
- Bestellungen
- Warengruppen
In der Tabelle Bestellungen soll täglich geprüft werden, aus welchen Warengruppen die Bestellungen eingehen. Dafür habe ich beginnend in der Zelle I13 folgende Formel, die funktioniert:
=WENN(Warengruppen!$A1="";"";SUMME(ZÄHLENWENN(I$2:I$11;Warengruppen!$A1:$J1)))
Diese Formel wird nach rechts und unten kopiert, weswegen die Spalten bzw. die Zeilen fixiert sind.
Da das Gesamtprojekt sehr viele Daten umfasst, möchte ich diese Formel per VBA lösen. Dazu habe ich mir zunächst per Makro die VBA-Lösung aufzeichnen lassen:
Sub Aufzeichnung()
With Worksheets("Bestellungen")
Range("I13").Select
ActiveCell.Formula2R1C1 = _
"=IF(WARENGRUPPEN!R[-12]C1="""","""",SUM(COUNTIF(R2C:R11C,WARENGRUPPEN!R[-12]C1:R[-12]C10)))"
Range("I14").Select
End With
End Sub
Funktioniert soweit.
Jetzt möchte diese Formel per VBA auf die Zellen I13 : S15 erweitern. Ich habe nach diversen Versuchen zwei Lösungen, die als Sub akzeptiert werden, beim Ausführen kommen aber Fehlermeldungen:
Fehler beim Kompilieren:
Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft
Das sind meine Lösungsansätze:
Sub Formel_7()
Dim i As Integer, j As Integer
Dim result As Variant
With Worksheets("Bestellungen")
For i = 13 To 15
For j = 9 To 19
If Worksheets("WARENGRUPPEN").Cells(i - 12, 1).Value > "" Then
result = WorksheetFunction.CountIf(Range(Cells(i - 12, 0), (Cells(i - 2, 0)), Worksheets("WARENGRUPPEN").Cells(i - 12, 1).Value))
Else
result = ""
End If
Cells(i, j).Value = result
Next j
Next i
End With
End Sub
Sub Formel_8()
Dim i As Integer, j As Integer
Dim result As Variant
With Worksheets("Bestellungen")
For i = 13 To 15
For j = 9 To 19
If Worksheets("WARENGRUPPEN").Cells(i - 12, 1).Value > "" Then
result = WorksheetFunction.CountIf(Cells(i - 12, 0), (Cells(i - 2, 0)), Worksheets("WARENGRUPPEN").Cells(i - 12, 1).Value)
Else
result = ""
End If
Cells(i, j).Value = result
Next j
Next i
End With
End Sub
Hier noch meine Musterdatei:
https://www.herber.de/bbs/user/167124.xlsm
Wo liegen meine Fehler?
Vielen Dank für eine Hilfe.
mfg