Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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

Verständnisfrage

Verständnisfrage
20.12.2022 16:52:11
Alex
Benötige mal eure Hilfe.
Userbild
Ich habe 2 Tabellen in denen jeweils in einer Spalte Produkt (A) und Lieferdatum (B) stehen, ich möchte nur bei Produkten die in beiden Tabellen die Identisch sind überprüfen ob das Lieferdatum gleich ist und wenn nicht den Produktnamen und die beiden Lieferdaten in einer Tabelle Vergleich ausgeben lassen.
Es sind ca. 3-6000 Zeilen in den Tabellen, denke mit Schleifen zu Arbeiten dauert dann ewig. Wie könnte ich das dann noch lösen ?

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verständnisfrage
20.12.2022 17:29:15
onur
"denke mit Schleifen zu Arbeiten dauert dann ewig" - da irrst du dich gewaltig. Poste mal eine Datei.
AW: Verständnisfrage
20.12.2022 17:36:22
Alex
kann leider nur das hier posten, daten liegen in der Arbeit ......
https://www.herber.de/bbs/user/156861.xlsm
Anzeige
AW: Verständnisfrage
20.12.2022 17:38:41
onur
Da könntest du dir wenigstens die Mühe machen, genug Pseudodaten zur Verfügung zu stellen - oder wie soll ich dir zeigen, dass es schnell genug geht?
AW: Verständnisfrage
20.12.2022 17:45:04
onur
Vergiss es - mache ich selber.
AW: Verständnisfrage
20.12.2022 18:55:30
Alex
wow, Danke, da spar ich mir das Power Query. Perfekt
Gerne !
20.12.2022 18:56:19
onur
AW: Gerne !
20.12.2022 19:29:17
Alex
@onur, wie kann ich im vergleich beide Lieferdatums in spalte 2 +3 anzeigen um zu sehen wie sie sich unterscheiden ?
die anzahl der zeilen je tabellenblatt kann ich ja mittels
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ermitteln
Anzeige
AW: konnte feststellen: PQ ist schneller ...
21.12.2022 18:45:09
neopa
Hallo onur,
... weil mich die Vergleichsmöglichkeit interessiert hat, hab ich mal meine persönliche Regel, keine VBA-Datei aus dem Forum zu aktivieren, gebrochen. Bei den wenigen Datensätzen in Deiner Beispieldatei, die im Ergebnis zu listen sind, fällt der Unterschied nicht ins Gewicht. Doch anders sieht es aus, wenn viel mehr zu listen sind. Dazu hab ich in Deiner Datei in Tabelle1!B2 folgende Formel: =HEUTE()+ZEILE()+(REST(ZEILE();8)=0) nach unten kopiert. Da braucht Dein Programm schon auf meinem PC 10 sec. Die PQ-Lösung braucht keine Sekunde. Wenn die 8 in vorgenannter Formel verkleinert wird, wird das Verhältnis nach gravierender.
Gruß Werner
.. , - ...
Anzeige
AW: konnte feststellen: PQ ist schneller ...
21.12.2022 19:37:00
onur
Hallo Werner,
Das glaub ich gerne, dass PQ schneller ist als VBA (sollte es ja auch, bei Multithread vs Singlethread), aber ich benutze keín PQ, da ich es bis dato vermeiden konnte (und zu faul war), mich damit zu beschäftigen.
Aber trotz Singlethread sind Dictionaries verdammt schnell, finde ich.
Gruß
Onur
AW: hierzu nun ...
21.12.2022 19:55:20
neopa
Hallo onur,
... bzgl. VBA hab ich wiederum nur rudimentäre "Kenntnisse". Dies in etwa so, als wenn ich bzgl. Formelerstellung nur SUMME() verstehen würde. Aber eins konnte ich feststellen, Power Query ist wesentlich einfacher zu erlernen als VBA, auch wenn ich da von den da bestehenden Möglichkeiten erst ein Bruchteil mir erworben habe. Die hier im thread zur Lösungsfindung notwendige Schritte in/mit PQ konnte ich damit innerhalb von 5 Minuten erstellen.
Gruß Werner
.. , - ...
Anzeige
AW: hierzu nun ...
21.12.2022 20:48:04
onur
Hi Werner,
dann sollte ich mich vielleicht auch mal mit beschäftigen.
Was hältst du hiervon (mit MOD 2) ? Schnell genug?
https://www.herber.de/bbs/user/156886.xlsm
Gruss
Onur
AW: jetzt konnte ich feststellen, ...
22.12.2022 08:46:23
neopa
Hallo onur,
... dass in Deiner zuerst eingestellten Lösung, offensichtlich die von Dir zusätzlich bereitgestellte Zeitmessung die Bremse war. Die eigentliche Aufgabenstellung wird sehr schnell erledigt. Für den TE müsste jetzt nur noch die Datums-Ausgaben nebeneinander gestellt werden, was aber kein Problem sein sollte.
Doch ich behaupte auch hier, dass nicht jeder User mit VBA-Kenntnissen, eine derartige Lösung aufstellen hätte können. Dagegen dürfte (fast) jeder User, der sich mit einem viel kleinerem Zeitanteil zum Erwerb an PQ-Erfahrung als der zur Erlangung von VBA-Fähigkeiten einbringt, in der Lage sein wird, eine PQ-Lösung z.B. u.a. auch für eine derartige Aufgabenstellung in kurzer Zeit aufzustellen. Und das könnte mE ein für viele Excel-User ein wesentliches Plus sein.
Gruß Werner
.. , - ...
Anzeige
AW: jetzt konnte ich feststellen, ...
22.12.2022 18:00:35
onur
Hi Werner,
Die Bremse war nicht die Zeitmessung, sondern die Ausgabe der Daten, weswegen es ja mit deiner Formel mit der 8 (bzw später mit der 2) wesentlich langsamer wurde, da viel mehr "Findlinge" vorhanden waren. Der eigentliche "Kern" des Codes, der die Unterschiede sucht, ist eigentlich immer gleich schnell, egal wieviel gefunden wird. Die (zeilenweise) Ausgabe über Schleife, statt en bloc, war die Bremse.
Gruss
Onur
AW: daran erkennst Du, ...
22.12.2022 18:55:02
neopa
Hallo onur,
... dass ich Deinen VBA_Code nicht verstanden habe. D.h. ehrlich gesagt, hatte ich mir auch keine Mühe dazu gegeben. Ich hatte nur eine ganz oberflächliche Sichtung dessen vorgenommen. Danke für Deine korrigierende Information.
Gruß Werner
.. , - ...
Anzeige
Vermutlich am schnellsten (365 oder XLWeb):
21.12.2022 20:22:26
lupo1
G1:
=LET(a;SORTIEREN(A2:B10);b;SORTIEREN(D2:E9);
aa;INDEX(a;;1);bb;INDEX(b;;1);ab;INDEX(a;;2);ba;INDEX(b;;2);
x;LET(x;VSTAPELN(aa;bb);EINDEUTIG(VSTAPELN(EINDEUTIG(x);EINDEUTIG(x;;1));;1));
y;HSTAPELN(x;XVERWEIS(x;aa;ab;"Err";0;2);XVERWEIS(x;bb;ba;"Err";0;2));
FILTER(y;INDEX(y;;2)INDEX(y;;3)))

AW: mE so wohl nur von "Insidern" aufstellbar owT
22.12.2022 08:47:47
"Insidern"
Gruß Werner
.. , - ...
Bleib sachlich, neopa!
22.12.2022 09:22:09
lupo1
Jeder ist ein Insider, weil jeder Zugang zu XLWeb hat.
Und wer als 365er nicht updatet, der will es halt nicht anders. Im Moment ist die einzige Funktion =BILD() nur für Insider; alle anderen lassen sich im privaten 365 nutzen, da MS sie allen 365ern zugänglich macht. Betrieblich (oder betrüblich) mag da ein Admin vor sein. Dann: XLWeb.
Mich kotzt es langsam an, wie die innovativste Version des Programms, über welches wir hier reden, andauernd von allen Seiten gebasht wird - unter dem Mäntelchen, bloß kein Abo schieben zu wollen. Aber alle gucken Netflix.
Und plötzlich fängst auch Du an von Massendatenverarbeitung zu reden, weil Du nun PQ kennst und Deine AGGREGAT-Lösungen endlich abnehmen.
Anzeige
AW: ich war und bin sachlich, nur Du ...
22.12.2022 14:48:20
neopa
Hallo lupo1,
... konntest oder wolltest mein in "" gesetztes Wort "Insidern" offensichtlich anders verstehen, als von mir wirklich gemeint war (nämlich analog so wie in meiner Aussage bzgl. des VBA-Lösungsvorschlag von onur).
Aber wenn Du es schon so interpretiert, wie Du es getan hast, dann solltest Du beachten, wie ich aus mehrfacher Erfahrung weiß, dass der "Normaluser" nur die Programm(versionen) nutzt bzw. nutzen will (und teilweise betrieblich bedingt auch nur nutzen darf) die auf seinem PV/Notebook installiert sind bzw. mit der er vertraut ist. Das kannst Du für Dich ignorieren und trotzdem Deine Meinung mitteilen aber Du kannst niemanden vorschreiben, was er er zu tun hat oder auch nicht.
Gruß Werner
.. , - ...
Anzeige
Ich habe nur kein Lust darauf, immer diese ...
22.12.2022 15:04:04
lupo1
... "Insider"-Blödsinnigkeiten lesen zu müssen, wenn ich sogar im Betreff (reichen würde: im Beitrag) auf 365/Web eingrenze.
Ich wiederhole noch mal: Seit wann wird plötzlich der jeweilige State-of-the-Art-User angegriffen (365) und nicht mehr (etwas eher verständlich) der 1997-User? Ich sehe nicht ein, dass man sich für irgendwas da rechtfertigen muss. Außerdem verwenden mitttlerweile fast 50% (größenordnungsmäßig) der Frager 2021 oder 365.
AW: entspanne Dich doch einfach nur mal owT
22.12.2022 15:15:37
neopa
Gruß Werner
.. , - ...
Sei nicht so eifersüchtig auf 365
22.12.2022 15:42:48
lupo1
... ich schreibe doch auch nicht hinter jeden Deiner PQ-Beiträge, was man da besser machen könnte.
Weil ich es gar nicht könnte.
Anzeige
AW: ich war und bin sachlich, nur Du ...
22.12.2022 15:16:09
Alex
Jungs, ihr müsst doch nicht streiten . @onur da ich immer wieder verschiedene listen bekomme, nutze ich als Ergebnis deiner Bemühungen nun VBA, die Daten dafür werden auch über VBA in die Tabelle kopiert. PQ über VBA anzusprechen hab ich nicht hinbekommen
Mit VBA (Datei im Dialog wählen) , öffnen, aktivieren , inhalt des ersten Tabellenblattes in meine Tabelle kopieren und mit VBA von @onur die interessanten Blätter vergleichen. Die lese ich auch in eine selectbox zum auswählen ein.
Und in der Arbeit habe ich nur Office 2016.
AW: Vermutlich am schnellsten (365 oder XLWeb):
22.12.2022 21:59:40
onur
Hi Lupo,
Zu deiner Formel: Die Originaldatei hat mind 6000 Zeilen und es werden ZWEI Blätter miteinander verglichen. Und wenn ich deine Formel in irgendein Blatt Zelle G1 (egal welches) der zuerst geposteten Beispielsdatei einfüge, bekomme ich nur Müll raus (keine Ahnung, ob ich da was falsch mache).
Das hier aber ist kürzer und funktioniert (zumindest bei mir):
https://www.herber.de/bbs/user/156904.xlsm
.XLSM kann ich nicht ausführen (Sicherheit)
23.12.2022 00:27:12
lupo1
... und meine Funktion ist nur 1spaltig auswertend gedacht. Daher musst Du die Verkettung Deines 2-Spalten-Beispiels natürlich schon am Anfang bei den Argumenten und nicht später erst innerhalb der Funktion vornehmen. Außerdem vermisse ich das eine oder andere EINDEUTIG und VSTAPELN, wenn mich nicht alles täuscht.
AW: .XLSM kann ich nicht ausführen (Sicherheit)
23.12.2022 06:26:58
onur
Einspaltig ? Zweispaltig? Vermisse Eindeutig, VStapeln? Versteh ich nicht. Es ging doch darum, welche Artikel auf BEIDEN Blättern vorkommen, jedoch mit anderem Datum. .Das heisst in diesem Falle 10000 Ergebniszeilen.
Bei deiner Formel sehe ich nirgendwo einen Verweis auf ein anderes Blatt.
Das Makro ist nur von der VBA-Lösung gewesen (linke Seite), einfach ignorieren.
Wir kommen da jetzt durcheinander, onur
23.12.2022 10:01:00
lupo1
1. Mein LISTCOMPL ist (wie seine 3 Geschwister -AND, -OR und -XOR) strikt auf 1-Spaltenprobleme gerichtet, siehe INDEX(aa;;1).
2. LISTCOMPL ist aber nur eine Zeile des Codes.
3. Drumherum wird hier konkret dann 2- bzw. 3spaltig aufgerüstet (XVERWEIS). Dafür habe ich noch keine Standardroutine.
4. Mehrspalten kann man ganz einfach mit =NACHZEILE(...TEXTVERKETTEN()) "ver1Spalten".
LET und LAMBDA leben von inhaltlicher Modularisierung. Habe ich mir einmal eine Standardroutine wie LISTCOMPL ausgedacht, verwende ich sie entweder im Code oder idealerweise als außenliegende LAMBDA-Funktion (was letzteres aber bedingt, dass man seinen gesamten LAMBDA-Schatz immer in einer persönlichen Tabellenvorlage drin hat).
AW: Verständnisfrage
23.12.2022 12:32:38
Daniel
Hi
6000 Zeilen sind für einen modernen Rechner noch nicht so viel.
Ich würde hier einfach per SVerweis das Datum aus der einen Liste in der anderen Liste ausgeben lassen
Also im Prinzip so in einer Tabelle in Spalte C

=WennFehler(SVerweis(A2;Tabelle2!A:B;2;falsch);"")
Und in Spalte D dann:

=Wenn(C2="";"Produkt fehlt";Wenn(C2=B2;"Datum gleich";"Datum unterschiedlich"))
Dann in Spalte D nach "Datum unterschiedlich" filtern.
Wenn da die Berechnung zu lange dauert, die 2. Tabelle nach Produkt-ID aufsteigend sortieren und die Formel in Spalte C so schreiben:

=wenn(A2=SVerweis(A2;Tabelle2!A:A;1;wahr);SVerweis(A2;Tabelle2!A:B;2;wahr);"")
Spalte D dann wie oben.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige