Clever-Excel-Forum

Normale Version: Produktive Arbeitszeit berechnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
(22.05.2016, 10:53)SJBZ500 schrieb: [ -> ]Hallo,
 
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:
Hallo,

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.

mfg
Hallo Fennek,

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

Gruß und danke im Voraus
Hallo,

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.

mfg
Hallo,

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.

Gruß und danke im Voraus
Hallo,

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
Hallo,

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.

Gruß und danke im Voraus
Hallo Fennek,

ich habe den Fehler selber gefunden.


Zitat:
Code:
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")))

"-1" hat in Deinem Code gefehlt.

Du hast mir sehr geholfen. Ich werde Dir in den nächsten Tagen einen 25 € Amazongutschein zukommen lassen.
Schicke mir mal bitte Deine Mail.

Danke noch mal Gruß SJBZ500

P.S. ich sehe gerade das ich Dir ja auch eine Mail schicken kann.
Seiten: 1 2