Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenabgleich über mehrere Dateien

Datenabgleich über mehrere Dateien
09.04.2013 09:34:45
Thomas
Moin,
ich habe eine Frage zu einer Datenabgleichsgeschichte.
Ich bekomme monatlich eine Excel-Datei mit rund 6000 Zeilen (seit Jahren).
Die liegen alle in einem Verzeichnis und heissen alle dat1101 dat1102 dat1103 usw. aktuell ist es dat1304 (Jahr-Monat)
Die Aktuelle möchte ich nun mit allen alten Dateien abgleichen, und zwar, ob der Text, der in A1 steht, irgendwo in einer der anderen in der Spalte A vorkommt. Wenn ja, dann muss ich den Inhalt aus der zugehörigen Zelle B in die aktuelle B1 übertragen.
Dann weiter mit A2 - suchen - wenn vorkommt übertragen usw.
Also quasi jede Zelle der Spalte A der aktuellen Datei mit allen anderen Dateien und allen Spalten A (Zeile 1-6000) abgleichen (und gegebenenfalls übertragen)
Was ich mich nun frage, da das ganze irgendwann zeitkritsch werden dürfte, wie geht man das an? Ich würde ja alle Dateien in eine zusammenspielen in Blatt ALT und dann jedesmal wenn eine neue Datei kommt, diese in Blatt NEU einlesen.
Dann per VBA einen Abgleich fahren (Blatt NEU gegen Blatt ALT) und danach Blatt NEU in Blatt ALT hinten dranhängen - usw.
Nur kann man auch direkt (lesend) auf die anderen Dateien im Verzeichnis zugreifen? Oder geht das (eindeutig) langsamer? Wir sind halt jetzt schon bei rund 150.000 Zeilen... (insgesamt)
Tommi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Rückfragen
09.04.2013 10:13:10
Erich
Hi Thomas,
wenn ich das recht verstanden habe, steht in allen Dateinen des Verzeichnisses in Spalte A eine ID.
Wenn eine ID aus der neuen Datei in einer der alten Dateien vorkommt, sollen die alten Werte der Zeile
ab Spalte B (oder die ganze Zeile - Spalte A ist ja schon gleich) auf die neuen Werte kopiert werden.
Die neuen Werte ab Spalte B werden damit gelöscht.
Habe ich das richtig verstanden?
Wesentliche Frage: Was soll geschehen, wenn eine ID der neuen Datei in mehreren alten Dateien vorkommt,
etwa in Dat1102, Dat1107 und Dat1202?
Die Zeile welcher der alten Dateien soll dann verwendet werden? Die aus Dat1102, aus Dat1107 oder die aus Dat1202?
Wenn man ein Blatt "ALT" erstellt aus allen alten Dateien, kann man bei mehreren Zeilen einer ID
gleich entscheiden, welche der Zeilen in "ALT" gehört.
Noch eine Frage: Sind die Tabellen nach Spalte A sortiert?
Und noch eine: Warum VBA? Ist das nicht die klaasische Verwendung der Fkt. SVERWEIS?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Rückfragen
09.04.2013 10:32:16
Thomas
Hai Erich G.,
also
- nein, es geht nicht um IDs sondern um einen Texteintrag in Spalte A
- sobald der erste Eintrag IRGENDWO gefunden wurde (anfangend mit der ältesten Datei erste Zeile) wird der Inhalt aus Spalte B aus der Trefferdatei in die aktuelle in Spalte B kopiert
Thema erledigt.
Hätte eigentlich gedacht, das es mit VBA einfacher gehen würde, ich würde ja zusätzlich noch bei Treffern in der aktuellen Datei bei 100% Übereinstimmung die Zeile GRÜN färben wollen und bei NEU ist in ALT zu 100% enthalten aber in ALT steht noch etwas mehr drin, die Zeile ORANGE einfärben.
So als zusätzliche Hilfe/Information.
Eigentlich ist es ja nur ein klassischer Fall von einer Schleife, eben nur die Frage ob man aus Performancegründen alles in eine Datei kopiert (und ob das langfristig geht ;) ) oder ob man auch einfach alle Dateien im Verzeichnis als LOOKUP nutzen kann...
Tommi

Anzeige
Neue Formulierung
09.04.2013 11:00:38
Erich
Hi Tommi,
dieser Texteintrag in Spalte A wird hier m. E. als ID verwendet, daher meine Bezeichnung.
Kopiert werden soll nicht die ganze Zeile, sondern nur der Wert aus Spalte B. Sorry, hatte ich falsch gelesen.
Wenn der Texteintrag in Spalte A in mehreren Alt-Zeilen oder Dateien gefunden wird, gilt die älteste,
mit der kleinsten Zeilennummer.
Den folgenden Satz habe ich einfach nicht verstanden:
"ich würde ja zusätzlich noch bei Treffern in der aktuellen Datei bei 100% Übereinstimmung
die Zeile GRÜN färben wollen und bei NEU ist in ALT zu 100% enthalten aber in ALT steht noch
etwas mehr drin, die Zeile ORANGE einfärben."

Wie ist "100% Übereinstimmung" festzustellen?
Was heißt "in ALT steht noch etwas mehr drin"?
Kann der Texteintrag in Spalte A innerhalb der aktuellen Datei mehrfach vorkommen?
Wie soll dann verfahren werden?
Sollen alle Sätze erhalten bleiben? Sollen Daten von älteren auf neue Sätze kopiert werden?
Ist das der Fall mit der GRÜN-Färbung?
Noch eine Frage: Sind die Tabellen nach Spalte A sortiert?
Und noch eine: Warum VBA? Ist das nicht die klassische Verwendung der Fkt. SVERWEIS?
Und noch eine: Wie stabil ist die "Vergangenheit"? Will sagen: Können sich die ALT-Dateien öfter ändern?
Dann wäre auch die Sammlung der ALT-Dateien zu pflegen. Einfacher wäre evtl., auf die einzelnen ALT-Dateien zuzugreifen.
Ich stelle diese vielen blöden Fragen, weil ich meine, dass die Antworten für eine Entscheidung über
das beste Vorgehen wichtig sind. :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
P.S.: Ich heiße Erich. "Erich G." ist nur meine UserID, nicht mein Name. :-)

Anzeige
AW: Neue Formulierung
09.04.2013 12:32:20
Thomas
Hallo Erich,
die ersten 3 Annahmen von dir stimmen und Textfeld=ID, ok, für mich ist 'ne ID immer ein Zahlenwert (oder Zahlen+Buchstaben), aber eben immer einmalig - kein längerer Text der auch mehrfach vorkommen kann.
Zu dem Rest - es geht darum den ERSTEN Treffer (wenn überhaupt) in den alten Dateien zu finden. Angefangen mit der ältesten Datei. Und WENN ein Treffer existiert, dann die Spalte B zu übertragen. Sonst soll nichts übertragen werden.
- Sortiert ist generell nichts - sollte auch nicht!
Als Beispiel:
früher=ALT 'Das Wasser war nass und kalt'
heute=NEU 'Das Wasser war nass und kalt' - GRÜN, weil komplette Übereinstimmung
heute=NEU 'Das Wasser war nass' - ORANGE, weil keine komplette Übereinstimmung
heute=NEU 'Der Berg ist hoch' - bleibt unverändert, weil keine Übereinstimmung
Evtl. kommen da aber noch weitere Abstufungen dazu (Teilvergleich bei Satzzeichen oder so in der Art) - deshalb ist es für SVerweis vermutlich zu komplex, aber ich lasse gerade eine simple Schleife laufen, und vergleiche jeden Fall aus TAB-NEU mit jedem einzelnen in TAB-ALT, uiuiui, das dauert...
Und ALT besteht bisher nur Testweise aus 8000 Zeilen...
Und ich finde die Fragen schon okay, man steckt meist so in einem Problem drin, das man gewisse Randbedingungen/Einschränkungen/VSS gar nicht mehr beachtet, gut wenn man dazu aufgefordert wird nochmal darüber nachzudenken ;)
Tommi

Anzeige
Beispielmappe und -ablauf
11.04.2013 13:02:55
Erich
Hi Tommi,
es hat etwas gedauert - man hat ja auch nicht immer Zeit...
In der Mappe habe ich dir mal einen Ablauf zusammengestellt, bei dem du lediglich ein (leeres) Verzeichnis
auf deinem Rechner anlegen und in der Tabelle angeben musst.
24 Beispielmonate für die Jahre 2011 und 2012 werden angelegt, dazu ein Neu-Monat 2013-04.
Wenn du A0_Start ausführst, kannst du zusehen, was passiert:
https://www.herber.de/bbs/user/84824.xlsm
Der Vergleich von 6000 neuen Datensätzen mit ca. 100000 alten Sätzen dauert bei mir unter 1 Minute.
Was wäre bei dir zeitkritisch? Minuten, Stunden?
Noch eine Bemerkung:
Eine Beschleunigung wird erreicht durch Sortierung von "TabsAlle" nach den ersten (hier) 7 Stellen.
Ich habe die Vermutung (kenne aber natürlich deine Daten nicht), dass bei einem Treffer wenigstens
die ersten 7 Stellen gleich sein müssen.
(Es könnten auch 4, 5 oder 6 oder 8 oder mehr Stellen sein...)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Beispielmappe und -ablauf
11.04.2013 13:13:48
Thomas
Hey - kein Thema, bis ich es mir genauer anschauen kann, dürfte es auch 'Wochenende' werden...
Erstmal danke, Feedback kommt bestimmt!
Und nein, nicht die ersten Buchstaben sind relevant, es muss schon ein FULL Vergleich gemacht werden.
Und es können auch 150 Zeichen oder mehr sein.
Die Sache mit der Sortiererei ist aber durchaus machbar, ich muss mal schauen ob es eine Kennung der einzelnen 'Wellen' gibt, sonst muss ich sie jedesmal dazubauen, aber damit könnte man natürlich erstmal bis zum ersten übereinstimmenden Zeichen springen und dann, wenn das erste Zeichen nicht mehr passt, den Abgleich abbrechen.
Das dürfte die Sache enorm beschleunigen.
Wie gesagt, ich schaue es mir mal an und melde mich.
DANKE auf alle Fälle erstmal!
Tommi

Anzeige
Erklärung
11.04.2013 13:33:27
Erich
Hi Tommi,
sicher sind auch die ersten Buchstaben relevant. Meine Prozedur macht auch den FULL Vergleich.
Das mit den ersten z. B. 7 Zeichen dient lediglich dazu, schnell eine Startzeile für die Suche eines neuen Textes
in der TabsAlle.xlsx ermitteln, damit nicht immer ab Zeile 1 bis zum 1. Treffer gesucht werden muss.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

noch eine Beispielmappe
14.04.2013 13:37:10
Erich
Hi Tommi,
ich habe noch etwas weiter gespielt. Dabei ist die folgende BeiSpielMappe herausgekommen:
https://www.herber.de/bbs/user/84875.xlsm
Du brauchst nur in B6 den Namen eines leeren Verzeichnisses einzutragen, auf 'Start' zu klicken -
und dir dann die Ergebnisse anzusehen.
Wenn das so einigermaßen ok ist, lässt sich die testweise Erstellung der Beispielmonate leicht ausbauen.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige