VBA Code braucht eine Korrektur zum Thema Erkennen Tage anhand der Uhrzeiten
#1
Hallo zusammen,

ich muss die Ausbringung einiger Abteilungen aus dem SAP exportieren und in Excel die Ausbringung präsentieren.

Das Problem ist, dass Excel verstehen muss, dass ich den Tag nicht wie gewöhnlich von "00:00:00" bis  "00:00:00" betrachten möchte. Der Tag beginnt für uns um "06:00:00" und endet am nächsten Tag um "06:00:00". Am Ende des Tages möchte ich die Gutmenge der Abt. "AA" ,"BB" und "CC" wissen. Ich habe es nicht mal für die Abt. "AA" es hinbekommen. Undecided

Eine Datei mit meinem Code füge ich bei. Ich danke Euch im Voraus für Eure Unterstützung.


Angehängte Dateien
.xlsm   2024 Ausbringung.xlsm (Größe: 53,73 KB / Downloads: 4)
Antworten Top
#2
moin,

zieh doch einfach 6 Stunden vom Zeitstempel ab...

Viele Grüße
derHöpp
Antworten Top
#3
(06.02.2024, 14:27)derHoepp schrieb: moin,

zieh doch einfach 6 Stunden vom Zeitstempel ab...

Viele Grüße
derHöpp

Wie ? Huh Ich habe es nicht verstanden Undecided
Antworten Top
#4
Ich stelle fest, dass ich die falsche Datei hochgeladen habe.
Jetzt aber.... 17


Angehängte Dateien
.xlsm   2024 Ausbringung.xlsm (Größe: 57,3 KB / Downloads: 11)
Antworten Top
#5
Hallo,


.xlsm   2024 Ausbringung Kuwer.xlsm (Größe: 67,37 KB / Downloads: 6)

Gruß, Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Tommiks
Antworten Top
#6
Hi,

dafür braucht man doch kein VBA, das auch noch sehr langsam arbeitet (bei mir 36 Sekunden).

Es reicht die Formel
B2[:B376]: =SUMMENPRODUKT(('2024'!$A$2:$A$1052="AA")*(('2024'!$B$2:$B$1052+'2024'!$C$2:$C$1052-0,25)>=A2)*(('2024'!$B$2:$B$1052+'2024'!$C$2:$C$1052-0,25)<(A2+1))*'2024'!$D$2:$D$1052)

Hier benötigt Excel zum Berechnen der 366 Formeln bei einem CalculateFullRebuild gerade mal 0,03 Sekunden.
Selbst wenn ich es auf die 50.000 Zeilen der VBA-Routine ausdehne, dann sind es gerade mal 1,3 Sekunden.

Mit einer Hilfsspalte, die ('2024'!$B$2:$B$1052+'2024'!$C$2:$C$1052-0,25) einmalig berechnet, dürfte es noch etwas schneller werden - vor allem da man dann SUMMEWENNS auf die gesamten Spalten verwenden kann.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • Tommiks
Antworten Top
#7
unsachlich, gelöscht
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Tommiks
Antworten Top
#8
(07.02.2024, 05:18)Tommiks schrieb: Wie ? Huh Ich habe es nicht verstanden Undecided

Moin,

1. entferne zunächst den Filter.
2. Füge eine neue Spalte "Arbeitstag" hinzu
3. Die neue Spalte erhält die folgende Formel:
Code:
=GANZZAHL(B2+D2-ZEIT(6;0;0))
4. Erstelle eine Pivottabelle (Ribbon Einfügen-> Bereich Tabellen -> PivotTable)
5. In der Pivottabelle:
- Arbeitstag in die Zeilen
- Fertigungsstelle in die Spalten
- GutMenge in die Werte
6. fertig; Kein VBA, Kein Rumgehampel.

Viele Grüße
derHöpp
[-] Folgende(r) 2 Nutzer sagen Danke an derHoepp für diesen Beitrag:
  • HKindler, Tommiks
Antworten Top
#9
Top! Auf die Idee mit GANZZAHL (oder KÜRZEN) bin ich jetzt nicht gekommen. Damit vereinfacht sich meine Formel auf

=SUMMENPRODUKT(('2024'!$A$2:$A$1052="AA")*(KÜRZEN('2024'!$B$2:$B$1052+'2024'!$C$2:$C$1052-0,25;0)=A2)*'2024'!$D$2:$D$1052)

und eine Zeit von 0,026 Sekunden bzw. bei 50.000 Zeilen auf 0,84 Sekunden.

Aber Pivot ist allemal besser.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 2 Nutzer sagen Danke an HKindler für diesen Beitrag:
  • derHoepp, Tommiks
Antworten Top
#10
Vielen vielen Dank für effektive Lösung meines Problems... 18
Antworten Top


Gehe zu:


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