Heute geht es darum, dass aus importierten Daten je nach Wunsch die nicht erwünschten rausgeschmissen werden.
Es wird ein Start- und ein Enddatum über eine InputBox in Variablen geschrieben (StartDatum und EndDatum).
In Spalte E steht das Datum und in Spalte F die Uhrzeit!
EIN (Arbeits-)Tag besteht aus 3 Schichten.
Die Frühschicht von 06:00 - 13:59 Uhr
Die Spätschicht von 14:00 - 21:59 Uhr
Die Nachtschicht von 22:00 - 05:59 Uhr
Jetzt wird Zeile für Zeile in einer Schleife erst geprüft, ob der Wert in der Datumsspalte älter als das eingegebene Startdatum
oder
2 Tage weiter als das gewünschte Enddatum ist. (2 Tage, weil die Nachtschicht des Enddatums ja datumtechnisch 1 Tag weiter geht als das eingegebene Enddatum)
Im 2. Schritt werden vom ersten Tag alle Daten vor 06:00:00 Uhr entfernt (mittels >0,25)
und im 3. Schritt alle Daten vom Tag nach dem eingegebenen EndDatum ab 06:00 Uhr (mittels >=0,25)
'Zeilen zählen
Zeilenzahl = .Range("B1").CurrentRegion.Rows.Count
'Zielbereich festlegen
For j = 2 To Zeilenzahl
'Datum außerhalb Einträge entfernen
If .Range("E" & j).Value EndDatum + 1 Then
.Rows(j).Delete
j = j - 1
'Einträge vor der ersten Frühschicht entfernen
ElseIf .Range("E" & j).Value = StartDatum And .Range("F" & j).Value = 0.25 Then
.Rows(j).Delete
j = j - 1
End If
Next j
Datenansicht:Hilfstabelle
A | B | C | D | E | F | |
1 | Barcode | Masterbarcode | Schicht | LP Nutzen | Datum | Uhrzeit |
2 | 3420 | 3420153123 | NS | 6 | 12.03.2018 | 05:58:06 |
3 | 3420 | 3420153119 | NS | 6 | 12.03.2018 | 05:59:01 |
4 | 3420 | 3420153101 | FS | 6 | 12.03.2018 | 06:01:53 |
5 | 3420 | 3420153095 | FS | 6 | 12.03.2018 | 06:02:52 |
6 | 5640 | 5640044145 | FS | 6 | 12.03.2018 | 13:58:48 |
7 | 5640 | 5640044151 | FS | 6 | 12.03.2018 | 13:59:48 |
8 | 5640 | 5640044169 | SS | 6 | 12.03.2018 | 14:01:47 |
9 | 5640 | 5640044193 | SS | 6 | 12.03.2018 | 14:02:45 |
10 | 4072 | 4072252078 | SS | 2 | 12.03.2018 | 21:59:20 |
11 | 4072 | 4072252222 | SS | 2 | 12.03.2018 | 21:59:44 |
12 | 4072 | 4072252294 | NS | 2 | 12.03.2018 | 22:07:16 |
13 | 4072 | 4072252298 | NS | 2 | 12.03.2018 | 22:07:47 |
14 | 3430 | 3430154057 | NS | 6 | 13.03.2018 | 05:58:48 |
15 | 3430 | 3430154051 | NS | 6 | 13.03.2018 | 05:59:44 |
16 | 3430 | 3430154752 | FS | 6 | 13.03.2018 | 06:04:01 |
17 | 3430 | 3430154746 | FS | 6 | 13.03.2018 | 06:05:26 |
Der Vorgang braucht definitiv zu lange, und ich weiß nich warum. Sollte eigentlich schnell gehen, oder?
Sind For-Schleifen grundsätzlich langsam?
Freundliche Grüße