Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
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
VBA - 2 Spalten gleichzeitig durchsuchen
31.07.2017 07:38:16
Robin
Hallo zusammen,
ich möchte eine große Liste an aufsteigend sortierten Daten (ca. 50.000 Zeilen, 9 Spalten) nach den ersten beiden Spalten möglichst schnell und wie folgt durchsuchen:
-Spalte A nach einer Auftragsnummer (Zahl) durchsuchen (z.B. 123456)
-Spalte B nach einer Unternummer (Text) durchsuchen (z.B. 004)
-kompletten Bereich der Übereinstimmung (durch die Sortierung ist es ein Block an Daten) aus der "Listenmappe" in meine "Abfragenmappe" kopieren
Listenbeispiel:
100000 001 Test 1 Test 1 Test 1 Test 1 Test 1 Test 1
111111 002 Test 2 Test 2 Test 2 Test 2 Test 2 Test 2
333333 003 Test 3 Test 3 Test 3 Test 3 Test 3 Test 3
333333 004 Test 4 Test 4 Test 4 Test 4 Test 4 Test 4
333333 004 Test 5 Test 5 Test 5 Test 5 Test 5 Test 5
444444 004 Test 6 Test 6 Test 6 Test 6 Test 6 Test 6
555555 005 Test 7 Test 7 Test 7 Test 7 Test 7 Test 7
Abfrage nach "333333" und "004" müsste also folgende Daten ergeben:
333333 004 Test 4 Test 4 Test 4 Test 4 Test 4 Test 4
333333 004 Test 5 Test 5 Test 5 Test 5 Test 5 Test 5
Ich habe das Ganze mit .Find zwar geschafft, allerdings nur indem ich die Daten zwischendurch in ein Blatt schreibe und diesen Bereich wieder mit .Find durchsuche, was leider sehr viel Laufzeit in Anspruch nimmt...
Danke schon einmal im Voraus!
Liebe Grüße,
Robin

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

Betreff
Datum
Anwender
Anzeige
AW: VBA - 2 Spalten gleichzeitig durchsuchen
31.07.2017 07:49:43
Oberschlumpf
Hi Robin
von dir per Upload eine Bsp-Datei mit Bsp-Daten (es müssen nicht 50.000 Einträge sein, aber so 50 wären nicht schlecht) könnte hier sehr hilfreich sein.
Grundsätzlich würde ich empfehlen, den Gesamtbereich in ein mehrdimensionales Array einzufügen und mit For/Next dieses Array dann durchsuchen.
Treffer würde ich erst mal in ein weiteres Array schreiben, und nach Ende des Durchlaufs den Inhalt aus dem 2. Array in deine Tabelle "Abfragenmappe" einfügen.
Ciao
Thorsten
AW: VBA - 2 Spalten gleichzeitig durchsuchen
31.07.2017 07:50:17
hary
Moin
Hab hier kein Excel.
Warum nutzt du nicht den Filter und mit Specialcells(xlCellTypeVisible)nur die sichtbaren rueberkopieren?
gruss hary
Anzeige
deine Idee...
31.07.2017 08:00:25
Oberschlumpf
Hi hary,
ist sehr gut.
Ich bin ziemlich VBA-lastig, daher ist mein 1. Ansatz eigtl immer VBA :-)
Aber Excel bietet natürlich schon in seiner "Grundansicht" viele andere, manchmal bessere Lösungen :-)
Und, ok, wenn ich mir "treu" bleiben will, kann ich ja auch mit VBA den Autofilter aktivieren + automatisch die Trefferzeilen da einfügen wo gewünscht :-)
Ciao
Thorsten
AW: @ Thorsten
31.07.2017 08:09:32
hary
Moin Thorsten
"Und, ok, wenn ich mir "treu" bleiben will, kann ich ja auch mit VBA den Autofilter aktivieren + automatisch die Trefferzeilen da einfügen wo gewünscht :-)"
Ich meinte auch alles per VBA;-)
Filter einschalten
Filtern nach:Inputbox(erste Abfrage)Inputbox(zweite Abfrage)
Specialcells(xlvisible) kopieren
einfuegen
Filter ausschalten
gruss hary
Anzeige
AW: VBA - 2 Spalten gleichzeitig durchsuchen
31.07.2017 08:36:41
Robin
Hallo und vielen Dank schon einmal.
Das mit dem Array hatte ich mal versucht, habe allerdings noch nicht die Kenntnisse dazu. Auch mit dem Autofilter stelle ich mich ganz schön an.
Anbei wie gewünscht meine Beispieldatei mit dem langsamen Code und ein paar anonymisierte Daten:
https://www.herber.de/bbs/user/115143.xlsm
AW: VBA - 2 Spalten gleichzeitig durchsuchen
31.07.2017 09:17:34
Daniel
Hi
mit Autofilter und sortierten Daten sollte das eigentlich auch bei größeren Datenmengen sehr schnell gehen.
probier mal diesen Code, passend für deine Beispieldatei.
Daten werden ab O10 eingefügt.

Sub test()
Dim rng As Range
Dim t As Double
t = Timer
With ActiveSheet
With .Cells(1, 1).CurrentRegion
.Sort key1:=.Cells(1, 1), order1:=xlAscending, _
key2:=.Cells(1, 2), order2:=xlAscending, _
Header:=xlYes
.AutoFilter field:=1, Criteria1:=Range("L1").Value
.AutoFilter field:=2, Criteria1:=Range("M1").Value
Set rng = .Resize(.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)
End With
.ShowAllData
With Range("O10")
.CurrentRegion.Offset(1, 0).ClearContents
rng.Copy .Cells
End With
End With
Range("O9") = Timer - t
End Sub
Gruß Daniel
Anzeige
AW: VBA - 2 Spalten gleichzeitig durchsuchen
31.07.2017 09:41:05
Robin
Hallo Daniel,
vielen Dank für den Code, das ist genau, was ich gesucht habe! Funktioniert auch mit meiner Originaldatei perfekt.
Danke auch an die anderen :)

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige