Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1504to1508
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

Kompliezierter Sverweis/VBA

Kompliezierter Sverweis/VBA
22.07.2016 10:06:58
Jan
Moin,
ich habe das Problem das ich zu einer sich Ständig ändernden Liste von Artikelnummern das Letzte Änderungsdatum angezeigt brauche jedoch wenn dieses Heute seine sollte dann das Datum davor.
Ich habe von der Community hier bereits einen tollen Lösungsvorschlag über eine Formel bekommen, jedoch verlangsamt diese meine Excel ins unermessliche.
Ich bin aktuell dabei VBA zu Lernen und war bisher sehr erstaunt welche möglichkeiten mir dadurch geboten werden, daher hoffe ich auf eine "Ressoursen freundlichere" lösung über VBA.
Beispieldatei anbei
https://www.herber.de/bbs/user/107159.xlsx

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Datum suchen mit Dictionary
22.07.2016 13:08:41
Michael
Hallo Jan,
mein erster Gedanke war, die Werte aus der Kontroll-Liste im zweiten Blatt mit .find zu ermitteln: das sucht von oben, aber auch "rückwärts", aber ich habe das dann verworfen, denn je nach dem, wo die Werte stehen, muß die Suchfunktion ja JEDESMAL eine Volltextsuche vornehmen und jeden Datensatz im Prinzip mehrmals "anfassen".
Deshalb lese ich die komplette Statusliste (und zwar nur die Spalten A und F) zunächst in ein Array ein (bitte zu recherchieren), das dann wiederum in ein "Dictionary" eingelesen wird (recherchieren...).
Damit werden zwar ALLE Daten "angefaßt", aber eben definitiv nur EINMAL.
Der Kern sind diese Zeilen:
For i = 1 To UBound(art)
If dat(i, 1) 

Gehe alle Zeilen durch, und wenn das Datum kleiner als das heutige ist, übernimm es ins Dictionary.
Das ist wiederum "lexikalisch" aufgebaut, wie der Name schon sagt, z.B.,
o("Artikel")="01.01.2016"
d.h. es speichert zu einem "KEY" (der "Artikel") ein "ITEM" (das Datum), eben einen beliebigen Wert.
Die Besonderheit ist, daß bereits vorhandene Key/Item-Paare durch weitere Zuweisungen überschrieben werden, so daß letztlich das letzte Datum, das vor "heute" liegt, übrig bleibt.
Ich habe die Datei aufgebohrt auf knapp 30 Kontrollwerte und gut 10000 Statuswerte: geht ratz-fatz.
Die Datei: https://www.herber.de/bbs/user/107169.zip
Schöne Grüße,
Michael
Anzeige
Zu spät, aber sei's drum: AutoFilter-Variante...
22.07.2016 14:02:12
Michael
Hallo bei'nander!
Bin erst vor Kurzem in den Faden eingestiegen, sorry Michael - Du warst wie immer schneller (hab ich aber erst jetzt gesehen).
Aber schön, dass Du eine Arr/Dic-Lösung hast; ich hab mich mal an einer AutoFilter-Variante versucht:
https://www.herber.de/bbs/user/107175.xlsm
Weil ich's jetzt schon hatte...
Schönes WE allen! Heiß und gewittrig bei mir!
LG
Michael
@M(m) oft, aber nicht immer...
22.07.2016 15:11:38
Michael
Hi Michael,
ich wollte Deine Variante mal in "meiner" Datei mit den vielen Werten testen (und natürlich die Zeit messen, interessehalber).
Sie lief aber auf einen Fehler "keine Zellen gefunden" in der Zeile
E.Offset(, 1).Value = rQ.SpecialCells(xlCellTypeVisible)(1).Value
Ich wollte zuallererst schon fragen, ob es definitiv so ist, daß passende Werte vorhanden sind, aber bei der Dic-Variante isses wurscht.
Allerdings wundert es mich insofern, als bei mir "überall" ein Datum ausgegeben wird: es erscheint kein "n.v."-Wert. D.h., beim Filter dürfte der Fehler eigentlich auch nicht auftreten.
Naja, ich muß in die Küche, jetzt kommen Gäste... Hier isses "lauheiß" & angenehm, zumindest in der Wohnung.
Schöne Grüße nach Vienna,
Michael
Anzeige
AW: @M(m) Nachtrag
23.07.2016 14:39:05
Michael
Hi Michael,
jetzt habe ich nochmal damit herumgespielt: aus irgendeinem Grund waren die Daten nicht richtig sortiert und v.a. Relikte in den Spalten rechts von F vorhanden, da konnte die Filterung natürlich nicht gehen.
Nach Bereinigung werfen beide Algorithmen die gleichen Daten aus.
So soll es ja auch sein, deshalb hatte es mir auch keine Ruhe gelassen, denn dann wäre eine der beiden Varianten fehlerhaft gewesen - sind sie aber nicht (oder beide haben den gleichen Fehler, hehe).
Liebe Grüße,
Michael
AW: @M... Super, das beruhigt mich...
25.07.2016 08:35:33
Michael
... Denn mich hätte es gewundert, wenn meine Variante gar nicht funktionieren würde.
Danke für's nochmal testen und Grüße zurück nach N
Michael
Anzeige
AW: Datum suchen mit Dictionary
22.07.2016 14:41:36
Jan
Hallo Michael,
ich bin begeistert es funktioniert super!
ich muss gestehen ich hab aktuell in etwa die Hälfte von dem Code verstanden, aber es Funktioniert und sobald ich VBA besser kann schau ich es mir nochmal an ob ich dann verstehe ;-)
Vielen dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige