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

Identifiezierung einer Zeile durch 3 Parameter

Identifiezierung einer Zeile durch 3 Parameter
15.01.2021 11:37:11
Ralf
Hallo,
Ich habe ein Arbeitsblatt mit 48 Spalten und rund 35k Zeilen. Aus diesen 35.000 muss ich die rund 12.000 relevanten Zeilen finden. Was relevant ist wird basierend auf 3 Spalten entschieden.
In der ersten Spalte steht eine Artikelnummer. Aus einem anderen Arbeitsblatt bekomme ich die rund 12.000 relevanten Artikelnummern und muss für diese die Zeile finden, in der in Spalte 2 und 3 jeweils die richtigen Werte stehen. Diese Werte sind fix, gleichen für alle und liegen als Konstante vor. Habe ich die richtige Zeile für die Artikelnummer gefunden nehme ich aus der 4. Spalte den Wert den ich brauche um damit weiter zu arbeiten.
Ich hab verschiedene Ansätze versucht und zumeist funktionieren sie auch irgendwie, aber es dauert sehr lange für jede von den rund 12k artikelnummern durch alle 35k Zeilen zu "loopen".
Die bisher performanteste Methode die ich versucht habe war zuerst eine Hilfsspalte einzufügen, in der ich die drei relevanten Suchwerte "verkette" und dann über "match" nach der verketteten Version suche anstatt nach drei einzelnen Werten.
Aber schön ist das irgendwie nicht wirklich... ;-)
Da die Suche auf zwei feststehenden Parametern beruht hatte ich auch daran gedacht den Filter irgendwie zu nutzen und alle Zeilen die nicht diese beiden Werte zeigen wegzufiltern oder auch ganz zu löschen, um danach dann nur nach der Artikelnummer zu suchen, aber irgendwie klappt das nicht so richtig.
Hat jemand 'ne Idee wie ich das hinkriegen kann ohne das es ewig dauert?
Danke Ralf

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA mit Array
15.01.2021 11:57:37
Fennek
Hallo,
bei diesen Daten-Mengen könnte es schneller sein, die relevanten Spalten in ein Array zu kopieren und dort die Schleifen zum Vergleichen laufen zu lassen.
mfg
AW: VBA mit Array
15.01.2021 12:15:30
Daniel
HI
wenns wirklich schneller werden soll, müsstest du zuerst die Datentabelle in ein Dictionary überführen und dann aus diesem Dictionary auslesen.
Im Dictionary ist der Zugriff auf die Werte schneller, als du die Unsortierten Daten per Schleife von oben nach unten durchsuchst, wie du es im unsortierten Array tun müsstest.
das schnellste ist binäre suche und die erfordert sortierte Daten.
Daher Tabelle sortieren (darin ist Excel sehr gut) und dann SVerweis/Vergleich anwenden, die können binäre Suche.
Gruß Daniel
Anzeige
AW: Identifiezierung einer Zeile durch 3 Parameter
15.01.2021 12:00:23
Günther
Moin,
es könnte sein, dass du über Daten | Abrufen und transformieren aka Power Query besser zum Ziel kommst.
 
Gruß
Günther  |  mein Excel-Blog
AW: Identifiezierung einer Zeile durch 3 Parameter
15.01.2021 12:08:46
Daniel
Hi
dein Ansatz mit dem Verketten zu einem Begriff ist schon der beste.
für eine optimale Performance musst du noch folgende Schritte tun:
1. in der zu durchsuchenden Tabelle müssen die drei Suchbegriffe in einer Hilfsspalte zu einem Begriff verkettet werden.
2. die zu durchsuchende Tabelle muss nach dieser Hilfsspalte aufsteigend sortiert werden.
ist die zu durchsuchende Tabelle aufsteigend sortiert, kannst du für Match (Vergleich oder SVerweis) die Variante mit 3/4. Parameter = 1 oder WAHR verwenden, die bei dieser Datenmenge um Welten schneller ist als die Variante mit 0 / FALSCH.
3. das Problem Suchbegriff nicht vorhanden, löst du mit einem zusätzlichen SVerweis. Aufgrund des großen Geschwindigkeitsvorteils kann man sich das Problemlos erlauben.
die Formel müsste dann nach diesem Schema geschrieben werden:
=Wenn(SVerweis(Suchberiff;SuchSpalte;1;wahr)=Suchbegriff;index(Ergebnisspalte;Vergleich(Suchbegriff;SuchSpalte;1));"--- fehlt ---")
ist zwar mit der Hilfsspalte und der notwendigen Sortierung nicht das Eleganteste, aber bislang in Excel für solche Auswertungen das schnellste was ich kenne.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige