Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wert in einer anderen Liste finden
#1
Hallo zusammen,
ich habe einen Wert z.B.: ADBSCC
Ich möchte jetzt wissen, ob ich diesen Wert in einer Liste, die sich in Spalte B befindet, finde. z.B.
Spalte A  Spalte B
3001       ADBS
8840       DLAL1TMZ
1920       DLAL2011
0815       DLALJ011
4711       DLALK027
Wobei hier die erste Zeile hier schon ein Treffer ergeben soll, da hier die Länge des Wertes in der Suchliste (4) mit den ersten 4 Stellen des Suchwerts übereinstimmen. Als Ergebnis erwarte ich den Wert aus Spalte A. In diesem Beispiel 3001
Das einzige was mir bisher einfällt ist, dass ich schaue ob mit der ersten Stelle des Suchwerts etwas gefunden wird. Wenn nein, suche mit den ersten beiden Stellen usw. 
Ich möchte das automatisiert machen, da ich das für über 20.000 Suchwerte in einer Liste mit ca 900 Werten durchführen muss.
Für jeden Tipp wäre ich dankbar.
Danke und Gruß Ralf
Antworten Top
#2
Hola,
wenn du immer mit der ersten Stelle anfängst zu suchen, wird dir bei "D" zB immer 8840 ausgegeben. 
Ist das wirklich so gewollt?
Gruß,
steve1da
Antworten Top
#3
Hallo,

als Konzept:

In Sheet(1) stehen 900 Begriffe

In Sheet(2) stehen 20.000 Suchworte

=> lade beide Sheets in je ein Dictionary und prüfe jedes Suchwort

Vermute Dauer: unter 1 Sekunde

Frage: Sind Grundkenntnisse in VBA vorhanden?

Im Forum hier gibt es auch PQ-Spezialisten, vielleicht geht es auch damit.


mfg
Antworten Top
#4
[off topic]
So von RPP63 zu RPK63:
War in Deiner Schulzeit auch Ralf der häufigste Jungenname?
In meiner Klasse waren es sechs!
Gut, da war auch ein Ralph dabei.

Gruß vom Babyboomer Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo,
zur Suche:
ich würde ja in der Liste nach A suchen. Der Wert steht ja nicht drin. Dann nach AD, ADB und dann ADBS. Der würde ja dann gefunden werden. Ich denke, das würde sicherlich gehen. Und ich weiß, dass keiner der Werte (Suchbegriff und Liste) länger als 8 Stellen ist. Sollte aus meiner Sicht gehen.

VBA-Kenntnisse sind da. Glaube ich  19 . Habe es schon ewig nicht mehr verwendet, da ich das meiste bisher immer mit den Funktionen lösen konnte.
Aber du hast Recht, auch hier könnte man sich eine Lösung basteln.
Gruß Ralf

21
Was du dir merken kannst. Ich bin froh wenn ich noch weiß, dass ich überhaupt in einer Schule war.
Aber ich glaube nein. Ich hatte nie mehrere Ralfs in der Klasse. Ich kann mich nur an einen in der weiterführenden Schule erinnern.
Ralf
Antworten Top
#6
Hallo,

im Beispiel geht es, aber das Übertragen auf die Original-Daten ...

Die Liste steht in Spalte A und B, die Suchbegriffe in Spalte F:

Code:
Sub F_en()
Dim LL As Object, Su As Object, Ar

Set LL = CreateObject("Scripting.Dictionary")
Set Su = CreateObject("Scripting.Dictionary")

'Einlesen des Liste
Ar = Cells(1, 1).CurrentRegion
For i = 1 To UBound(Ar)
    LL(Ar(i, 2)) = Ar(i, 1)
Next i

'Einlesen der Suchbegriffe
Ar = Cells(1, 6).CurrentRegion
For i = 1 To UBound(Ar)
    Su(Ar(i, 1)) = vbNullString
Next i

'Vergleichen
For Each k In LL.keys
    For Each l In Su.keys
        If k = Left(l, Len(k)) Then Debug.Print "Treffer", k, LL(k)
    Next l
Next k

End Sub

Die Ausgabe erfolgt im Debug-Fenster.


mfg

Bei Nachfrage bitte keine xlsm, sondern eine xlsx und VBA-Code im Forum.


Angehängte Dateien
.xlsm   RPK63.xlsm (Größe: 15,79 KB / Downloads: 3)
Antworten Top
#7
Hallo RPK63,

hier ein Vorschlag für eine Formellösung.
(wenn ich dein Anliegen richtig verstanden habe)

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDE
1Liste mit ca. 900 WertenSuchwerteErgebnis
23001ADBSADBSCC3001
38840AA125ABBCC1234
41920ADBXAABBCCDD#NV
5815DLALJ011DLALJ011815
64711DLALK027XX123#NV
71234ABBCXYZ889
85678RRRR15678
9889XY
104321RR123

ZelleFormel
E2=VERWEIS(2;1/(ZÄHLENWENN(D2;$B$2:$B$10&"*")*($B$2:$B$10<>""));$A$2:$A$10)
Verwendete Systemkomponenten: [Windows (64-bit) NT 10.00] / MS Excel 2021
Diese Tabelle wurde mit Tab2Html (v2.7.1) erstellt. ©Gerd alias Bamberg

Wobei noch die Frage zu klären wäre, ob es auch vorkommen kann, dass in der "Liste mit ca. 900 Werten" mehrere Werte einem der über 20.000 Suchwerte entsprechen können.
(und wie dann damit umgegangen werden soll)

Zum Beispiel:
Suchwert: ABCDE
Wenn in der "Liste mit ca. 900 Werten" einmal ABCD und auch AB vorkommt, würden laut deiner Beschreibung beide Werte das Suchkriterium erfüllen

Gruß
Fred
< es lebe die Hilfsspalte >
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste