Anzeige
Archiv - Navigation
1368to1372
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

Zeile per VBA mittels mehrerer Kriterien suchen

Zeile per VBA mittels mehrerer Kriterien suchen
05.07.2014 21:49:48
Chris
Hallo,
ich habe eine Excel-Tabelle, die in etwa so aussieht:
Spalte A | Spalte B | Spalte C | Spalte D |
Wert A | Wert 1 | Wert a | Ausgabe1 |
Wert A | Wert 1 | Wert b | Ausgabe2 |
Wert A | Wert 2 | Wert a | Ausgabe3 |
Wert B | Wert 1 | Wert c | Ausgabe4 |
Wert B | Wert 1 | Wert b | Ausgabe5 |
Wert B | Wert 2 | Wert a | Ausgabe6 |
Wert B | Wert 2 | Wert c | Ausgabe7 |
Jetzt suche ich die Zeile, in der Spalte A = A, Spalte B = 1 und Spalte C = b ist, um den Wert in Spalte D (Ausgabe2) zu erhalten.
Das Ganze möchte ich per VBA und logischerweise mit guter Performance machen, da die Tabelle ggf. mehr als 100.000 Einträge enthält.
Derzeit löse ich das indem ich die erste Spalte mittels Find Methode nach dem gesuchen Wert durchsuche und dann die anderen Spalten prüfe. Wenn nur eine der anderen Spalte nicht den jeweils gesuchten Wert enthält, durchsuche ich Spalte mittels FindNext nach der nächsten Zeile mit dem gesuchten Wert.
Ist das die beste Lösung? Kennt jemand eine bessere Lösung?
Danke für Eure Hilfe

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nutze den Autofilter
05.07.2014 22:51:51
Matze
Hallo Chris,
entweder die Suche manuell eingeben , oder per Makrorecorder aufzeichnen und die Zeilen ein wenig anpassen.
Gruß Matze

AW: Zeile per VBA mittels mehrerer Kriterien suchen
05.07.2014 22:53:52
Daniel
HI
gute Performance gibt folgendes:
1. in einer Hilfsspalte (E) die Werte aus Spalte A, B und C zu einem Begriff zusammenfassen: =A1&"-"&B1&"-"&C1
2. ganze Tabelle nach Hilfsspalte sortieren (oder eben nach Spalte A, B und C)
3. Ausgeben des Wertes aus Spalte D dann mit =Index(D:D;Vergleich("A-1-b";E:E;1))
wenn geprüft werden muss, ob die gesuchte Kombination überhaupt vorhanden ist, dann:
=Wenn(SVerweis("A-1-b";E:E;1;1)="A-1-b";index(D:D;Vergleich("A-1-b";E:E;1);"")
bei 100.000 Elementen brauchst du einen schnellen Suchalgorhytmus und den bekommst du mit Vergleich oder SVerweis, wenn die Daten aufsteigend sortiert sind.
als VBA sieht das dann in etwa so aus:
dim Zeile as long
dim Ergebnis as String
dim SuchWert as String
With AcitveSheet.UsedRange
with .columns(.columns.count + 1)
.formular1c1 = "=RC1&""-""&RC2&""-""&RC3"
.formula = .value
.EntireRow.Sort Key1:=.cells(1, 1), order1:=xlascending, header:=xlguess
end with
end with
SuchWert = "A-1-b"
Zeile = Worksheetfunction.Match(SuchWert, Range("E:E"), 1)
If Cells(Zeile, 5) = SuchWert then
Ergebnis = Cells(Zeile, 4)
Else
Ergebnis = ""
End If
Gruß Daniel
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige