Versuch das hier mal benutzung wie immer auf eigene gefahr ich hoffe ich konnte helfen
grüße Zero
Sub filter_and_output_results()
' Variablen deklarieren
Dim kw1 As String
Dim kw2 As String
Dim num_gleich As Long
' Eingabe des Benutzers abfragen
kw1 = InputBox("Geben Sie die letzte Kalenderwoche ein:")
kw2 = InputBox("Geben Sie die aktuelle Kalenderwoche ein:")
' Spalten A:C nach kw1 filtern und das Ergebnis in Zelle J2 ausgeben
Sheets("MASTER_DATEN").Range("A:C").AutoFilter Field:=1, Criteria1:=kw1, VisibleDropDown:=False
Cells(2, 10).Value = Application.WorksheetFunction.Subtotal(3, Range("A:A")) - 1
' Spalten A:C nach kw2 filtern und das Ergebnis in Zelle K2 ausgeben
Sheets("MASTER_DATEN").Range("A:C").AutoFilter Field:=1, Criteria1:=kw2, VisibleDropDown:=False
Cells(2, 11).Value = Application.WorksheetFunction.Subtotal(3, Range("A:A")) - 1
' Berechne K2-J2 und gebe das Ergebnis in Zelle N2 aus
Cells(2, 14).Value = Cells(2, 11).Value - Cells(2, 10).Value
' Spalten A:C nach kw1 filtern
ActiveSheet.Range("A:C").AutoFilter Field:=1, Criteria1:=kw1
' Durchlaufe alle Zeilen in der Tabelle
For i = 1 To 3000
' Wert in Spalte C abrufen
value = Cells(i, 3).Value
' Überprüfen, ob der Wert in beiden kw1 und kw2 vorkommt
If Application.WorksheetFunction.CountIf(Range("A:A"), kw2) > 1 And Application.WorksheetFunction.CountIf(Range("C:C"), value) > 1 Then
' Falls ja, Zähler für gemeinsame Werte erhöhen
num_gleich = num_gleich + 1
End If
Next i
' AutoFilter deaktivieren
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
' Ergebnis und weitere Berechnungen ausgeben
Cells(2, 9).Value = num_gleich / 2
Cells(2, 12).Value = Cells(2, 10).Value - Cells(2, 9).Value
Cells(2, 13).Value = Cells(2, 11).Value - Cells(2, 9).Value
End Sub
|