Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Produktive Arbeitszeit berechnen
#11
(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:
Gruß
Fred0



Meine Antworten sind freiwillig und ohne Gewähr!
Wenn nichts angegeben beziehe ich mich auf Excel 2016

Antworten Top
#12
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


Angehängte Dateien
.xls   Produktive Arbeitszeit berechnen.xls (Größe: 54 KB / Downloads: 7)
Antworten Top
#13
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
Antworten Top
#14
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
Antworten Top
#15
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
Antworten Top
#16
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
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • SJBZ500
Antworten Top
#17
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
Antworten Top
#18
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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste