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

Application.Match mit zwei Kriterien?

Application.Match mit zwei Kriterien?
23.08.2018 18:48:34
Michael
Hallo Zusammen,
mit Application.Match ermittele ich die Zeile eines Datensatzes zur weiteren Bearbeitung.
Jetzt ist jedoch notwendig, eine weitere Spalte nach einem zweiten Kriterium zu durchsuchen, um die Zeile des Datensatzes zu ermitteln.
Alle meine Versuche, über die Syntax ein zweites Kriterium zu integrieren, scheiterten.
Ist das überhaupt möglich? Oder gibt es zu Application.Match eine Alternative, die beim ersten Treffer die weitere Suche einstellt?
Vielen Dank und Gruß
Michael

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Match mit zwei Kriterien?
23.08.2018 19:01:55
Werner
Hallo Michael,
meines Wissens nach nicht.
Aber was hindert dich denn daran ein zweites Match mit deinem zweiten Suchbegriff auf die zweite Spalte zu machen?
Gruß Werner
AW: Application.Match mit zwei Kriterien?
23.08.2018 19:09:10
Michael
Hallo Werner,
vielen Dank für Deine Antwort.
Da beide Treffer in der selben Zeile liegen müssen, sollte ein zweiter Suchlauf kein Ergebnis bringen.
Gruß Michael
AW: Application.Match mit zwei Kriterien?
23.08.2018 19:27:17
Matthias
Moin!
ICh verstehe zwar noch nicht ganz, was du wie suchen willst, aber warum nutzt du nicht die .find Methode? Da könntest du nach dem ersten Treffer eine neue Suche in einer anderen Zelle in Anhängigkeit vom TReffer suchen.
Alternativ beschreibe mal bitte, wie / was du suchen willst (Schritt für Schritt).
VG
Anzeige
Beschreibung
23.08.2018 19:37:53
Michael
Hallo Matthias,
ich suche in einer Datenbank die Zeile eines Datensatz, bei dem die Kundennummer und der Ort den beiden Suchkriterien entsprechen. Wenn ein Datensatz gefunden wurde und die Zeilennummer in eine Variable geschrieben wurde, soll die Suche beendet werden.
Gruß Michael
AW: Beschreibung
23.08.2018 20:21:50
Robert
Hallo Michael,
als Formellösung würde mir eine Formel mit Summenprodukt einfallen. In VBA eingebaut sieht das in etwa so aus (angenommen die Kunden-Nr stehen in der Spalte A und der Ort in der Spalte C):
Sub SucheZeile()
Dim KundenNr As Integer, Ort As String, Zeile As Long, lZ As Long
'letzte Zeile mit Daten bestimmen
lZ = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
'Suchkriterien festlegen
KundenNr = 10
Ort = "Köln"
Zeile = Evaluate("=SUMPRODUCT((A1:A" & lZ & "=" & KundenNr & ")*(C1:C" & lZ & "=""" & Ort & """) _
*ROW(A1:A" & lZ & "))")
Debug.Print Zeile
End Sub

Als Ergebnis enthält die Variable Zeile die Zeilen-Nr., in der beide Bedingungen (Kunden-Nr und Ort) erfüllt sind. Werden die Bedingungen in keiner Zeile erfüllt, ist der Wert der Variablen Zeile 0.
Gruß
Robert
Anzeige
gute Lösung / Performanz ?
23.08.2018 20:45:55
Michael
HAllo Robert,
vielen Dank für Deine Lösung.
Ich werde es morgen an der Original-DB testen. Da ich über 100.000 Datensätze habe, macht mir die Performanz ein wenig Sorgen.
Darum dachte ich an eine Lösung, die bei einem Treffer die weitere Suche abbricht.
Aber jetzt habe ich eine Lösung parat und das ict das wichtigste.
Gruß
Michael
AW: gute Lösung / Performanz ?
23.08.2018 21:22:45
Robert
Hallo Michael,
mit der Perfomance bei so vielen Datensätze hatte ich auch meine Bedenken, aber das musst Du natürlich am Original testen. Ich habe hier mal einen Datenbereich von A1:Z109990 mit Daten befüllt. Mit meiner Kiste hier dauert ein einmaliger Durchlauf des Makros unter 0,15 Sekunden. Wenn die Zeilen-Nr. nicht mehrfach in dem Makro gesucht werden muss, sollte die Dauer noch vertretbar sein.
Gruß
Robert
Anzeige
AW: gute Lösung / Performanz ?
24.08.2018 13:17:29
Daniel
Hi
wenn du eine schnelle Berechnung brauchst weil
a) die Quelldatenbank sehr viele Zeilen hat
b) du sehr viele Berechungen dieser Art durchführen musst,
kannst du so vorgehen:
1. in der Quelldatenbank eine Hilfsspalte einfügen, in welcher du die beiden Suchbegriffe zu einem zusammenführst, z.B. durch Verketten mit "&"
2. die Quelldatenbank nach dieser Hilfsspalte aufsteigend sortieren
3. zur Suche in der Hilfsspalte die Funktion Vergleich / Application.Match mit drittem Parameter = 1 verwenden und dann den Wert mit Index auslesen (Wenn du die Hilfsspalte links von der Zielspalte einfügst, kannst du auch den SVerweis verwenden, um den Wert direkt auszulesen.
das ist das schnellste, weil Vergleich/SVerweis hier auf grund der Sortierung die binäre Suche verwenden kann, welche bei großen Datenmengen um Welten schneller ist als die normale Listensuche für unsortierte Listen.
Gruß Daniel
Anzeige
Prima!
24.08.2018 17:01:15
Michael
Hallo Daniel,
vielen Dank für Deinen Vorschlag. Eine wirklich prima Idee!
Die Hilfsspalte werde ich in der Tabelle anlegen. Über eine normale Formel (auch in der Tabelle) ermittele ich die Zielzeile und übergebe den Wert in ein eine Variable im Makro.
Vielen Dank und Gruß
Michael

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige