also ich bin kein "Rubberman" und habe auch kein Crossposten durchgeführt. Wir sind 750 Arbeitnehmer und haben Mitte April diese Datei ohne Formeln erhalten.
Doch du bist der andere genauso wie die Datei identisch sind. Schau dir mal die Eigenschaften an dann weisst du wann die Datei erstellt wurde und von wem :16:
hier der vba-Code abgestimmt auf die hochgeladene Datei.
Der im Fenster gezeigte Code ist "scharf", also er verändert die Spalte N, in der beigefügten Datei wird das Ergebnis im VBA "Direktfensten" ausgegeben, kann also mit den bisherigen Werten verglichen werden.
Die Art der Programmierung ist "etwas speziell", frage bitte nicht nach Erklärungen.
Code:
Sub Arbeitszeit() Dim ar lr = Cells(Rows.Count, "A").End(xlUp).Row ar = Application.Transpose(Range(Cells(1, "D"), Cells(lr, "D"))) 'Debug.Print UBound(ar) ar(UBound(ar)) = "Auftrag 1" For i = 1 To UBound(ar) If Left(ar(i), 3) = "Auf" Then ar(i) = i Else ar(i) = "T" End If Next i af = Filter(ar, "T", False) For i = 0 To UBound(af) - 1 cells(af(i), "N") = worksheetfunction.sum(range(cells(af(i), "N"),cells(af(i+1),"N"))) 'Debug.Print af(i), WorksheetFunction.Sum(Range(Cells(af(i), "N"), Cells(af(i + 1) - 1, "N"))) Next i End Sub
Wie immer bei meinen Beiträgen in Forum, der Code ist minimal getestet (an diesem Beispiel) und ist ohne Gewähr. Im Beispiel ist einmal "Auftrag" verkehrt geschrieben, einfach gesagt, ein Tipfehler führt zu falschen Ergebnissen.
erst mal Danke. Aber es liegt ein Problem vor. Deine Datei macht bei mir garnichts, Ich habe den Code jetzt in meine Datei eingefügt und geht. Problem das Ergebnis sollte in Spalte P. Geht das noch zu ändern Spalte N soll so bleiben
ich hatte geschrieben, dass "meine Datei nicht macht", ausser die Ergebnisse ins Direktfenster zu schreiben.
Da die Formel auf die Spalte N zu greift, ist es für mich einfacher, Spalte N zu überschreiben, damit Spalte P dann auf die korrigierten Zahlen zugreifen kann.
ja das kann ich mir vorstellen das es für Dich einfacher ist. Ich sehe da garnicht durch. Aber es zeigt mir ja dann die falschen Stunden an. Am liebsten wäre es mir Ergebmis in Spalte R raus aus der Tabelle und ich kann es weiter verarbeiten.
ungetestet wird das Ergebnis in Spalte R geschrieben und N bleibt unverändert.
mfg
Code:
Sub Arbeitszeit() Dim ar lr = Cells(Rows.Count, "A").End(xlUp).Row ar = Application.Transpose(Range(Cells(1, "D"), Cells(lr, "D"))) 'Debug.Print UBound(ar) ar(UBound(ar)) = "Auftrag 1" For i = 1 To UBound(ar) If Left(ar(i), 3) = "Auf" Then ar(i) = i Else ar(i) = "T" End If Next i af = Filter(ar, "T", False) For i = 0 To UBound(af) - 1 cells(af(i), "R") = worksheetfunction.sum(range(cells(af(i), "N"),cells(af(i+1),"N"))) 'Debug.Print af(i), WorksheetFunction.Sum(Range(Cells(af(i), "N"), Cells(af(i + 1) - 1, "N"))) Next i End Sub
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • SJBZ500
recht vielen Dank. eine Frage habe ich noch. Gleb rechnet jetzt richtig aber warum addiert es mir bei einem Auftrag immer 1 Stunde dazu ? Selbst wenn es keine Wartezeit gibt rechnet der Code 1 Stunde dazu.