Hallo! Also hier mal die Version mit den Blättern. Es wird erst der Mitarbeiter gesucht und dann alle Blätter und NrDatum durchgegangen, dann kommt der nächste dran. Probiere mal bitte, ob es klappt. VG
Sub berechnung()
Dim Spalte As Integer, Zeile As Integer, NrDatum As Integer, Spalte1 As Integer
Dim Datum As Date
Dim Anzahl As Integer, Arbeiter As Integer
Dim MaxArbeiter As Integer, MaxTage As Integer
Dim Eingabe As String
Dim blatt
'hier fehlte am Ende mindestens ") -bitte mal prüfen, ob da noch mehr stand
Eingabe = InputBox("Anzahl der Mitarbeiter", "Mitarbeiter")
'ergänzt um Prüfung ob es eine Zahl ist
If Eingabe = "" Or Not IsNumeric(Eingabe) Then Exit Sub
' könnte eigentlich raus
MaxArbeiter = CInt(Eingabe)
Eingabe = InputBox("Anzahl der Tage im Monat", "Monat")
'ergänzung um Prüfung Zahl
If Eingabe = "" Or Not IsNumeric(Eingabe) Then Exit Sub
'könnte auch raus
MaxTage = CInt(Eingabe)
For Zeile = 4 To MaxArbeiter + 4
' Name des Arbeiters festlegen
Arbeiter = Worksheets("MASTER").Cells(Zeile, 5).Value
'Anzahl schon mal auf 0 setzen
Anzahl = 0
'hier durch alle Blätter gehen, da Master die 1 ist ab Blatt 2 starten
For blatt = 2 To ThisWorkbook.Worksheets.Count
For Spalte = 6 To MaxTage + 6
'Datum festlegen
Datum = Worksheets("MASTER").Cells(3, Spalte).Value
'NrDatum wird gesucht
For NrDatum = 6 To 23
' wenn NrDatum gefunden, dann Datum suchen, es werden alle Daten überprüft und nicht vorher beendet, so sollte alle dabei sein
If Worksheets("Tabelle1").Cells(NrDatum, 1).Value = Datum Then
'Arbeiter suchen , würde alt. auch mit eine excelinternen Funktion gehen bspw. countif(Bereich, Suchwert)
For Spalte1 = 5 To 15
If Worksheets("Tabelle1").Cells(NrDatum, Spalte1).Value = Arbeiter Then Anzahl = Anzahl + 1
Next Spalte1
End If
Next NrDatum
' Anzahl eintragen
Worksheets("MASTER").Cells(Zeile, Spalte).Value = Anzahl
Next Spalte
Next blatt
Next Zeile
End Sub
|