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

Zwei Listen vergleich und einen Wert ausgeben

Zwei Listen vergleich und einen Wert ausgeben
30.07.2015 12:54:37
Frank
Hallo zusammen,
ich habe folgendes vor
in einem Arbeitsblatt RS-Übersicht lese ich Daten von Rundschreiben ein. Ein Titel lautet z.B.
Clearing- und Meldepflicht für außerbörsliche Derivatekontrakte (VIII)
Der Titel steht dabei in Spalte H.
Auf einem zweiten Arbeitblatt Zuständigkeiten habe ich eine Liste mit unbestimmter Anzahl von Zeilen. In Spalte A steht der Begriff Clearing- und Meldepflicht. Nach diesem Begriff möchte ich nun suchen. In der Spalte B steht der zuständige Mitarbeiter, den möchte ich ausgeben.
Ich möchte, dass in dem Blatt RS-Übersicht in Spalte R der Name des Mitarbeiters steht, der für den Begriff genannt ist. Ich habe aber leider keine Idee, wie ich nach Textteilen in einem Bereich suche und dann den entsprechenden Wert aus dem Bereich daneben ausgebe.
Wenn nötig, kann ich noch eine Musterdatei erstellen.
Gruß
Frank

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwei Listen vergleich und einen Wert ausgeben
30.07.2015 13:01:14
SF
Hola,
das hört sich nach dem Sverweis() an.
Gruß,
steve1da

AW: Zwei Listen vergleich und einen Wert ausgeben
31.07.2015 08:34:29
Frank
Hallo steve1da,
mit Sverweis komme ich hier gar nicht zurecht. Ich hab mal ein Muster der Datei hochgeladen
https://www.herber.de/bbs/user/99202.xlsx
Wie muss ich sverweis denn hier ansetzen?
Gruß
Frank

AW: Zwei Listen vergleich und einen Wert ausgeben
31.07.2015 13:06:40
Michael
Hi Frank,
anbei eine Datei ohne Makro: https://www.herber.de/bbs/user/99211.xlsx
Letzteres steckt im Tabellenblatt Tabelle1, Du mußt es nur ein VBA-Modul kopieren (und irgendwann als Excel *mit* Makro abspeichern).
Ich habe diesen Weg gewählt, weil das ellenlange Beschreibungen spart, wo die Daten stehen, auf die das Makro zugreift.
Schöne Grüße,
Michael

Anzeige
so?
30.07.2015 16:02:44
Michael
Hi zusammen,
so was Ähnliches hatten wir heute schon.
Ich hab mir die gleiche Datei geschnappt und aufgebohrt: https://www.herber.de/bbs/user/99192.xlsm
Das Makro holt sich alle Begriffe aus Zuständigkeiten (ohne Errorhandling wie leere Zeilen usw.) und durchsucht RS-Übersicht danach: falls dort vorhanden, wird der Name in R geschrieben.
Es wird quasi Excels Suchen-Dialog verwendet, bei dem man ja bekanntlich nach Teilbegriffen suchen kann; um Probleme mit ähnliche lautenden Begriffen zu vermeiden, frage ich noch ab, ob die jeweils ersten 3 Zeichen übereinstimmen, damit "nächster Begriff" nicht bei "übernächster Begriff" einen Treffer landet. An der Stelle sollte man vielleicht noch eine Schleife anbringen, die weitersucht.
Schau halt mal, ob es so taugt. Feinheiten kann man ja noch einbauen.
Happy Exceling,
Michael

Anzeige
AW: so?
31.07.2015 08:02:33
Frank
Hallo Michael,
leider kann ich die Datei nicht runterladen (Sicherheitsbeschränkung). Kannst Du den Code hier posten? Oder steht der schon in einem anderen Eintrage?
Gruß
Frank

AW: so?
05.08.2015 17:45:08
Frank
Hallo Michael,
ich hab das Makro jetzt endlich ansehen können. Im Grundsatz hat das funktioniert.
Sub suchen2()
Dim begriff$
Dim i&, bis&, bis2&
Dim c As Range
bis = Sheets("Zuständigkeiten").Range("A" & Rows.Count).End(xlUp).Row
bis2 = Sheets("RS-Übersicht").Range("H" & Rows.Count).End(xlUp).Row
' Sheets("Namen_plus_Info").Activate
For i = 1 To bis
begriff = Sheets("Zuständigkeiten").Range("A" & i).Value
Set c = Sheets("RS-Übersicht").Range("H1:H" & bis2).Find(What:=begriff, _
LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not c Is Nothing Then
'     Sheets("RS-Übersicht").Range("R" & c.Row).Value = Sheets("Zuständigkeiten").Range("B" & i) _
.Value
If Mid(begriff, 1, 3) = Mid(c.Value, 1, 3) Then
Sheets("RS-Übersicht").Range("R" & c.Row).Value = _
Sheets("Zuständigkeiten").Range("B" & i).Value
Else
Sheets("Zuständigkeiten").Range("C" & i).Value = "[nicht 1. Stelle]"
End If
Else
Sheets("Zuständigkeiten").Range("C" & i).Value = "[nicht gefunden]"
End If
Next
End Sub
Aber ich habe jetzt zwei Probleme damit.
1. Wenn der Suchbegriff , z. B. Clearing, nicht am Zellenanfang steht, bekomme ich kein Ergebnis.
2. Ich habe den Begriff Clearing- und Meldepflicht für außerbörsliche Derivatekontrakte (VIII) in der Liste mehrfach stehen, weil das Rundschreiben mit verschiedenen Ergänzungen mehrfach erschienen ist. Im ersten Eintrag erhalten ich einen Zuständigen, danach leider nicht mehr.
Ich kann zwar ein wenig an Codes herumschrauben, aber das bekomme ich leider (noch) nicht hin. Hast du da eine Idee?
Gruß
Frank
P.S. Weiter oben hab ich eine Musterdatei gepostet.

Anzeige
AW: so?
06.08.2015 11:49:41
Michael
Hallo Frank,
ad 1.: das war Absicht und steckt(e) in der "innersten" If-Verzweigung - die habe ich nun rausgenommen.
ad 2.: habe die Suche in eine Schleife gepackt.
Code anbei:
Option Explicit
Sub suchen150806()
Dim begriff$, firstAddress$
Dim i&, bis&, bis2&
Dim c As Range
bis = Sheets("Zuständigkeiten").Range("A" & Rows.Count).End(xlUp).Row
bis2 = Sheets("RS-Übersicht").Range("H" & Rows.Count).End(xlUp).Row
For i = 1 To bis
begriff = Sheets("Zuständigkeiten").Range("A" & i).Value
Set c = Sheets("RS-Übersicht").Range("H1:H" & bis2).Find(What:=begriff, _
LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
' Die Schleife für mehrere Treffer und überhaupt die ganze Suche ist angelehnt
' an die Info/das Beispiel unter
' www.herber.de/mailing/vb/html/xlmthfind.htm
If Not c Is Nothing Then
firstAddress = c.Address
Do
Sheets("RS-Übersicht").Range("R" & c.Row).Value = _
Sheets("Zuständigkeiten").Range("B" & i).Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
Else
Sheets("Zuständigkeiten").Range("C" & i).Value = "[nicht gefunden]"
End If
Next
End Sub
Schöne Grüße,
Michael

Anzeige
AW: so?
06.08.2015 12:24:26
Frank
Hallo Michael,
ich bekomme einen Fehler:
Fehler beim Kompilieren, Unzulässiger oder nicht ausreichend definierter Verweis.
im Code an der Stelle Set c = .FindNext(c).
Gruß
Frank

Nicht zu fassen,
06.08.2015 12:44:20
Michael
Frank,
ich hatte es ausprobiert und es ging, und jetzt geht's bei mir auch nicht mehr.
Kann aber auch gar nicht. In Herbers Code-Beispiel bezieht sich der . vor dem findnext auf ein Range, die mit with festgelegt wurde.
Ändere bitte die Zeile in:
Set c = Sheets("RS-Übersicht").Range("H1:H" & bis2).FindNext(c)

dann sollt es laufen.
Schöne Grüße,
Michael

Anzeige
AW: Nicht zu fassen,
06.08.2015 12:52:42
Frank
Hallo Michael,
ich hab ja echt Respekt vor den "helfenden Händen" hier im Forum. Das klappt super. Hab gerade 8500 Datensätze in 30 Sek. zugeordnet.
Dank und Gruß
Frank

freut mich, danke für die Rückmeldung owT
07.08.2015 14:18:24
Michael

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige