Clever-Excel-Forum

Normale Version: Performance-Problem mit Formel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo allerseits,

ich hoffe auf euren Rat bei folgendem Problem:

2 Tabellen. Tabelle 1 enthält Flugdaten, wobei hier der Abflughafen (Origin) und das Flugdatum + Uhrzeit wichtig sind. Tabelle 2 enthält Wetterdaten, die ich heruntergeladen habe. Wetterdaten gibt es für jeden Flughafen einmal pro Stunde. Ich muss nun für jeden Flug (Flughafen/Datum) in Tabelle 1 einen passenden Eintrag in der Wettertabelle 2 (Flughafen/Wetter) finden. Gibt es für den Eintrag in Tabelle 1 keinen genauen Uhrzeiteintrag in Tabelle 2, soll der zeitlich nächstkleinere Wert gefunden werden. Mein großes Problem mit der verwendeten Formel sind die Tabellengrößen:

Tabelle 1: 800.000 Einträge
Tabelle 2: 160.000 Einträge

Die verwendete Formel tut was sie soll, ich habe aber beim Runterkopieren der Formel nach einer Stunde Laufzeit erst ein Prozent erreicht. Ich habe eine verkürzte Version meiner Daten angehängt und hoffe inständlig auf Tipps zu diesem Laufzeitproblem.

Kann übrigens auch gerne eine andere Formel sein, wenn sie ihr Soll erfüllt.

Herzlichen Dank und Grüße
Chris
Hallo Chris,

ich habe aus reiner Neugierde mal dein Beispiel geladen und sehe im roten Feld die Buchstaben "E + D". Was bedeutet das??  Ich kenne mich mit Formeln nicht aus, sehe hier aber keinen kogischen Zusammenhang wo diese Werte herkommen?? Was hat das mit Wetterdaten zu tun??

Bei Formeln in dieser Menge stösst man technisch gesehen bestimmt von der Verarbeitungszeit her an Grenzen.  Kann man diese Datenmenge nicht um die -unbenutzten Daten- reduzieren???  Ist nur eine Frage aus reiner Neugier.  Ich habe erhebliche Zweifel das es bei der Datenmenge überhaupt praktikable Lösungen gibt??

Selbst als Volksschüler kann man berechnen wie lange das dauert, wenn du nach 1 Stunde erst 1% erreicht hast!  
Als alter Praktiker frage ich:  Muss man alle Daten für 24 Stunden haben?  Reichen nicht 2-3 Stunden aus, verteilt auf 8-12 Dateien?  

mfg  Gast 123
Hallo,

mein Kommentar nach 2 Minuten Datei-Durchsicht:

=aggregat() ist eine recht langsame Formel, es ist kein Wunder, dass es bei dieser Datenmenge zu langen dauert.

M.E. ist der einzige Weg, NUR die relevanten Daten in ein Array zu übertragen und dort zu berechnen. Da ich aber in der Kürze nicht verstanden habe, welche Spalten relevant sind, bedarf es noch einiger Erklärungen.

mfg
Die AGGREGAT-Formel ist Blöd-Zinn. Die funktioniert nur bei Puppenstuben-Modellen, aber nicht im ernsthaften Betrieb. Leider gibt es hier in den Foren meist nur ebensolche, so dass die Antworter darauf angespitzt sind.

Richtig entweder per VBA, oder mittels Formeln mit Sortierung und (evtl. mehrstufigem) VERGLEICH ohne ;FALSCH). Oder per PIVOT-Tabelle!
(10.02.2017, 16:52)Fennek schrieb: [ -> ]Hallo,

mein Kommentar nach 2 Minuten Datei-Durchsicht:

=aggregat() ist eine recht langsame Formel, es ist kein Wunder, dass es bei dieser Datenmenge zu langen dauert.

M.E. ist der einzige Weg, NUR die relevanten Daten in ein Array zu übertragen und dort zu berechnen. Da ich aber in der Kürze nicht verstanden habe, welche Spalten relevant sind, bedarf es noch einiger Erklärungen.

mfg

Hallo Fennek,

vielen Dank erst einmal!

In Tabelle 1 soll aufgrund der Spalten I (ORIGIN) und M (DAY_DEP_TIME) in Tabelle 2 ein passender Eintrag gefunden werden. Die Vergleichspalte zu ORIGIN in Tabelle 2 ist Spalte A (STATION) und die Vergleichsspalte zu DAY_DEP_TIME in Tabelle 2 ist Spalte B (VALID).

--> Finde zu Flughafen und Flugdatum aus Tabelle 1 einen passenden Eintrag (gleiche Zeit oder nächstfrühere) aus Tabelle 2 und gebe mir den Buchstaben aus Spalte V der Tabelle 2 zurück.

Ich hoffe, ich konnte dir das ein wenig klarer vermitteln?

Herzlichen Dank,
Chris
(10.02.2017, 16:55)lupo1 schrieb: [ -> ]Die AGGREGAT-Formel ist Blöd-Zinn. Die funktioniert nur bei Puppenstuben-Modellen, aber nicht im ernsthaften Betrieb. Leider gibt es hier in den Foren meist nur ebensolche, so dass die Antworter darauf angespitzt sind.

Richtig entweder per VBA, oder mittels Formeln mit Sortierung und (evtl. mehrstufigem) VERGLEICH ohne ;FALSCH). Oder per PIVOT-Tabelle!

Hallo Lupo,

danke dir für deine Einschätzung! Die Idee mit dem Aggregat kam von einem Forums-Kollegen. Zu seiner Ehrenrettung muss man sagen, dass er nichts über die letztendliche Datenmenge wusste. Leider kenne ich mich mit Excel nicht gut genug aus, um deine Tipps ad hoc in die Tat umzusetzen.

Herzlichen Dank und Grüße,
Chris
off topic...

Hallo, kann es sein, dass du nunmehr mindestens dreimal dieselbe Datei hochgeladen hast...? Muss das sein..?
(10.02.2017, 17:08)Jockel schrieb: [ -> ]off topic...

Hallo, kann es sein, dass du nunmehr mindestens dreimal dieselbe Datei hochgeladen hast...? Muss das sein..?

Es waren 2 Uploads. Sollte dich das geärgert haben, bitte ich vielmals um Entschuldigung. \
Du kannst gern Dateien auch wieder löschen. Ich werde für diesen Wunsch allerdings immer belächelt.

So, nun zur Lösung (bei nach Flugh/Datumzeit sortierter Tab2):

Tabelle1!AF2: =VERGLEICH(ERSETZEN(I2;3;1;ZEICHEN(CODE(RECHTS(I2))-1));Tabelle2!A:A)+1
Tabelle1!AG2: =VERGLEICH(I2;Tabelle2!A:A)
Tabelle1!N2: =INDEX(Tabelle2!V:V;AF2-1+VERGLEICH(M2;INDEX(Tabelle2!B:B;AF2):INDEX(Tabelle2!B:B;AG2)))
Tabelle1!A1: AA

Die genannten Hilfspalten können noch entfallen, wenn Du eine Tabelle mit den Flughäfen anlegst und die beiden ersten Formeln dort nur einmal verwendest, statt in jedem Datensatz. Das bringt nochmal ein paar Körner und Dateigrößenreduktion.

Ich tippe jetzt auf eine Berechnung unter 2 Minuten.
(10.02.2017, 17:24)chrisl schrieb: [ -> ]Es waren 2 Uploads. Sollte dich das geärgert haben, bitte ich vielmals um Entschuldigung. \

Hallo, mich ärgert das nicht, ich finde nur: einmal reicht, man könnte ja auf den Beitrag verlinken. Und waren es nicht drei mit dem letzten thread. War es nicht immer die selbe Datei...?
Seiten: 1 2