Registriert seit: 10.04.2014
Version(en): 2016 + 365
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' | | A | B | 8 | 1/1/2021 | 01 | 9 | 1/2/2021 | 02 | 10 | 1/3/2021 | 03 |
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
Registriert seit: 06.12.2015
Version(en): 2016
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:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28
• Rabe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.02.2021, 13:48
(Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2021, 13:55 von Rabe.)
(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
Registriert seit: 06.12.2015
Version(en): 2016
12.02.2021, 13:58
(Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2021, 14:22 von Fennek.)
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.02.2021, 14:33
(Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2021, 11:11 von Rabe.)
Hi, so sieht es jetzt aus:
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.
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 06.12.2015
Version(en): 2016
12.02.2021, 14:40
(Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2021, 14:43 von Fennek.)
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
12.02.2021, 15:12
(Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2021, 11:37 von Rabe.)
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
Registriert seit: 06.12.2015
Version(en): 2016
12.02.2021, 16:14
(Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2021, 16:14 von Fennek.)
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:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28
• Rabe
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, Zitat:Was sind die Kernzeiten? falls sich die Frage auf die Zeiten bezieht, da hab ich in der Datei auch keine gefunden 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
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|