Hallo nochmal! Also habe mir das nochmal angeschaut und deinen Code ein wenig umgestellt und auskommentiert. Würde ich an deiner Stelle auch immer machen. Hilft später zum Verständnis und bei Fragen (weiß man, was eigentlich passieren sollte). :-) ISt nicht gestestet, da ich die Ausgangsdaten nicht hatte. SOllte aber eigentlich klappen. Was willst du den in allen Blättern machen? So wie ich es verstanden habe, würde ich das mit den Blättern dann aber der neuen Zuordnung Anazhl = 0 machen. Frage dabei noch. Wo liegt den Master, ganz am Anfang in der MItte oder am Ende (von der Nummerierung wie sie im VBE zu sehen ist). Davon hängt ab, wie du die Schleife aufbauen musst. Ansonsten besteht die Gefahr, dass du auch Master ausliest, was ggf. zu ungewollten Ergebnisse führen würde. HIer erstmal der Code für ein Blatt. Wenn der klappt, kann man ihn ja erweitern. Schönen Abend noch
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
'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
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 Zeile
End Sub
|