Zeiterfassungsdaten auswerten
#11
Hi,

(12.02.2021, 12:45)Fennek schrieb: Damit wird das Datum in ein Excel-Datum gewandelt. Es sollte für alle Jahre und Monate passen.

Dann wird das Datum so angezeigt:
Arbeitsblatt mit dem Namen 'Datum'
AB
81/1/202101
91/2/202102
101/3/202103
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Ralf
Top
#12
In Spalte A ist das korrekte Datum, allerdings im US-Format, Ein "Format" in VBA oder per Hand die Spalte A auf das dt Datumsformat einstellen, hilft.
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Rabe
Top
#13
(12.02.2021, 13:35)Fennek schrieb: Einer der ersten Schritte müßte es m.E. sein, die Blöcke zu erkennen. Das "Musterfirma" ein Dammy ist, wird eine eindeutige Markierung bnötigt, z.B. immer 2 Zellen ober halb von "Druckdatum".

Das Musterfirma habe ich reingeschrieben, da steht schon unser Firmenname.
Aber ich könnte ja auch einfach die Zeile "Organisatuonseinheit" nehmen und dann aus dieser und der drunter aus Spalte L und BC die Inhalte nehmen und hinter jede Zeile, in der in A ein Datum steht, dort dann in die 4 neuen Spalten reinschreiben. Bis dann wieder der Begrff "Organisatuonseinheit" und damit ein neuer Block kommt und ich die neuen Daten aus L und BC hole.
Ich weiß nur noch nicht, wie ich es festlege, daß er am Ende des jeweiligen Blockes weiterspringt zum nächsten.

Formatierung des Datums hat funktioniert.

Gruß Ralf
Top
#14
Wenn "Musterfirma" immer einduetig ist, kann man mit Range.Find diese Zellen finden.

Also so ähnlich:

Code:
with columns(1)
i = 1
set rng = .find("Muaterfirma",,xlvalues,xlwhole)
if not rng is nothing then
adr = rng.address
ad1 = rng.address

do
set rng = .findnext(rng)
Range(range(ad1), rng.offset(-1)).name = "Block" = i
i = i +1
loop until rng.address = adr

ungeprüft ins Fenster geschrieben, Tipp- und LogikFehler wahrscheinlich

Nachfrage:

Steht in der Zeile "Periodensumme" alles Benötigte, d.h. müßten diese Werte "nur" der Person zugeordnet werden?

Falls das zutreffen sollte, wäre der Code viel einfacher.
Top
#15
Hi,

so sieht es jetzt aus:

.xlsb   Monatsjournal zum Programmieren.xlsb (Größe: 52,19 KB / Downloads: 13)

Vorgehen (Makrostarts manuell):
Ich kopiere das Sheet in das Blatt "ohne Leerzeilen", entferne die Leerzeilen, dann kopiere ich dieses Blatt in das "Datum" und wandle die Wochentage in ein Datum um.
Top
#16
Hallo Ralf,

dann stelle ich jetzt meine Bemühungen ein, Doppelarbeit hilft niemenden.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#17
Ein weiteres Blatt einfügen, also Sheets(3)

Code:
'Version 2: nur Perioden-summen auslesen

Sub PerSum()
Dim ID As Integer

With Sheets(3)
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1) = "Musterfirma" Then
            ID = ID + 1
            'Cells(i, 1).Offset(6, 55).Select
            .Cells(ID + 1, 1) = Cells(i, 1).Offset(6, 11)
            .Cells(ID + 1, 2) = Cells(i, 1).Offset(7, 11)
            .Cells(ID + 1, 3) = Cells(i, 1).Offset(5, 54)
            .Cells(ID + 1, 4) = Cells(i, 1).Offset(6, 54)
        End If
        
        If Cells(i, 1) = "Periodensumme" Then
            .Cells(ID + 1, 5) = Cells(i, 1).Offset(, 48)
            .Cells(ID + 1, 6) = Cells(i, 1).Offset(, 49)
        
        End If
    Next i
End With
End Sub

@Klaus-Dieter:

Es fehlt noch an guten Ideen, wie man die Fragestellung am effizientesten angeht.
Top
#18
Hi,

(12.02.2021, 13:58)Fennek schrieb: Steht in der Zeile "Periodensumme" alles Benötigte, d.h. müßten diese Werte "nur" der Person zugeordnet werden?

in der Periodensumme steht das Monatssaldo jeden Mitarbeiters.

Ich muß ja aber auch auswerten, hat einer die 10 h pro Tag verletzt, ist er nach Kernzeitbeginn gekommen oder vor Ende gegangen, usw. und das bezieht sich ja auf jeden Tag und jeden MA einzeln.

Gruß Ralf
Top
#19
Zitat:Ich muß ja aber auch auswerten, hat einer die 10 h pro Tag verletzt, ist er nach Kernzeotbeginn gekommen oder vor Ende gegangen, usw. und das bezieht sich ja auf jeden Tag und jeden MA einzeln.

Was sind die Kernzeiten?

====================================


Eine Prüfung der "10-Stunden-Regel" könnte so gehen:

Code:
Sub Zehn_Stunden()
For i = 1 To Cells(Rows.Count, "V").End(xlUp).Row
    If IsDate(Cells(i, "V")) And IsDate(Cells(i, "Z")) Then
        If (CDate(Cells(i, "Z")) - CDate(Cells(i, "V"))) > 0.4166 Then Cells(i, "V").Interior.Color = vbYellow: Debug.Print i
    End If
Next i
End Sub

Nochmals, erwarte nicht, dass ich dir einen kompletten Code liefere.
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Rabe
Top
#20
Hallöchen,

Zitat:Was sind die Kernzeiten?

falls sich die Frage auf die Zeiten bezieht, da hab ich in der Datei auch keine gefunden Sad
Falls sich die Frage auf den Begriff bezieht, sind das z.B. bei Gleitzeit die Zeiten, in denen man anwesend sein muss. Wir hatten mal Gleitzeit von 6:00 bis 18:00 Uhr mit Kernzeit von 8:00 bis 15:00 Uhr und einer maximalen Arbeitszeit von 10h / Tag.
Später hat man statt Spätschicht die Gleitzeit auf 6:00 Uhr bis 22:00 Uhr erweitert, da ist dann die Kernzeit entfallen Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


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