Excel in 2 Richtungen durchsuchen

...komplette Frage anzeigen

2 Antworten

Lad dir mal folgende Beispiel-Exceldatei runter.

http://upload.elmoro4life.com/387Durchsuchen003.zip

In Tabelle2 sind die Firmen aufgeführt zur Verwendung in Tabelle1 . In Spalte D steht die Formel. Die restlichen Spalten ab E werden nicht benötigt, Hab ich nur mal als Hilfe drin gelassen. Da sind die Formeln von Spalte D etwas einzeln aufgeschlüsselt.

Iamiam 08.02.2015, 01:26

Hab zwar die Aufgabe nicht ganz verstanden (was wo gesucht werden soll: ob eines der drei Wörter in B2 in Tab2 auftaucht? (immer drei?)?
Oder ...?
Allein schon fürs Frage-Verstehen ein dickes DH!
Bei der Textauflösung hab ich gute Erfahrungen gemacht mit der Methode, ein Leerzeichen nach dem anderen durch seltene und unterschiedliche Zeichen zu ersetzen. Die Formel Wechseln gestattet das und ist nicht rekursiv, was sich schon bei drei, erst recht aber bei mehr Wörtern sehr verkürzend auswirkt und die Übersichtlichkeit deutlich verbessert, vor allem, wenn man in die Formeln an geeigneter Stelle noch Umbrüche (mit Alt+Enter) einfügt, um so die Formelteile auch optisch zu trennen.
Ich nehme Deine Tabelle (Link) zur Basis. Den Eintrag B2 hab ich nochmals nach B8 kopiert, die Spalten verschmälert.
In M8 dann die Formel: =WECHSELN(WECHSELN(B8;" ";"►";2);" ";"▓";1)

in G8: =TEIL($M8;1;(FINDEN("▓";$M8;1))-1)

in H8: =TEIL($M8; FINDEN("▓";$M8;1)+1; FINDEN("►";$M8;1)-FINDEN("▓";$M8;1)-1)

in i8: =RECHTS($M8;LÄNGE($M8)-FINDEN("►";$M8;1))

Ohne Hilfsspalte M (Jetzt Bezug auf Eintrag in B7):

in G7: =TEIL($B7;1;(FINDEN("▓";WECHSELN(WECHSELN(B7;" ";"►";2);" ";"▓";1);1))-1)

in H7: =TEIL($B7;
FINDEN("▓";WECHSELN(WECHSELN(B7;" ";"►";2);" ";"▓";1);1)+1; FINDEN("►";WECHSELN(WECHSELN(B7;" ";"►";2);" ";"▓";1);1)-FINDEN("▓";WECHSELN(WECHSELN(B7;" ";"►";2);" ";"▓";1);1)-1)

in i7: =RECHTS($B7;
LÄNGE($B7)-FINDEN("►";WECHSELN(WECHSELN(B7;" ";"►";2);" ";"▓";1);1))

entsprechend kürzer und weniger unübersichtlich (von übersichtlicher mag ich gar nicht reden!) wird dann der SVerweis (ich würde mal wieder lieber index(Tab2!A:A;Vergleich(...;...;..)) nehmen (wobei das istfehler 'nur' den Vergleichsteil testen muss), das hab ich jetzt aber nicht mehr ausgearbeitet.

Auch wenn ich hier ungeniert Verbesserungsvorschläge verbreite: Für die Gesamtlösung nochmals ein dickes DH, den * bekommst Du hoffentlich, auch wenns nur eine symbolische Anerkennung ist!

1
Iamiam 09.02.2015, 14:22
@Iamiam

ich hab jetzt die automatisch an beliebige Satzlängen sich anpassende EINE Formel.
Sie ist aber doch recht sperrig. Basiseintrag in B12, Formel in

G12: =TEIL(" "&$B12&WIEDERHOLEN(" ";SPALTEN($G12:G12));
FINDEN("►";WECHSELN(" "&$B12&WIEDERHOLEN(" ";SPALTEN($G12:G12));" ";"►";SPALTEN($G12:G12));1)+1;
FINDEN("◙";WECHSELN(" "&$B12&WIEDERHOLEN(" ";SPALTEN($G12:G12));" ";"◙";SPALTEN($G12:G12)+1);1)
-FINDEN("►";WECHSELN(" "&$B12&WIEDERHOLEN(" ";SPALTEN($G12:G12));" ";"►";SPALTEN($G12:G12));1)-1)

nach rechts kopieren ergibt das 2., 3. usw. Wort.
Steuerungsinstrument ist Spalten($G12:G12)
Durch das Einfügen von immer mehr Leerzeichen ergibt sich kein Fehler bei zu vielen Kopien nach rechts. Nimmt man den Fehler inkauf, könnte die Formel deutlich kürzer ausfallen:

=TEIL(" "&$B12&" ";
FINDEN("►";WECHSELN(" "&$B12&" ";" ";"►";SPALTEN($G12:G12));1)+1;
FINDEN("◙";WECHSELN(" "&$B12&" ";" ";"◙";SPALTEN($G12:G12)+1);1)- FINDEN("►";WECHSELN(" "&$B12&" ";" ";"►";SPALTEN($G12:G12));1)-1)

Für den Einsatz in der Suchformel dürfte sich das nicht eignen, da ja die Formel erst kopiert und dann erst eingefügt werden könnte: Der Bereich für Spalten muss ja verändert werden.

0
Ortogonn 08.02.2015, 07:40

Du hast die Frage verstanden ? Respekt !!!

2
Iamiam 08.02.2015, 11:59
@Ortogonn

Die Textauflösung geht mit Wechseln auch noch viel kürzer:
in B7: Mein HOFER 487
Formel in
G7: =LINKS($B7;FINDEN(" ";$B7;1)-1)

H7: =TEIL($B7&" "; FINDEN("►";WECHSELN($B7&" ";" ";"►";1);1)+1; FINDEN("◙";WECHSELN($B7&" ";" ";"◙";2);1)-FINDEN("►";WECHSELN($B7&" ";" ";"►";1);1)-1)

für längere Sätze das eins nach rechts kopieren und nur den n.Auftreten-Index in jedem Wechseln um 1 erhöhen (Die Formel wird also nicht komplexer). In

i7: =TEIL($B7&" "; FINDEN("►";WECHSELN($B7&" ";" ";"►";2);1)+1; FINDEN("◙";WECHSELN($B7&" ";" ";"◙";3);1)-FINDEN("►";WECHSELN($B7&" ";" ";"►";2);1)-1)
das entspricht bei drei Wörtern schon RECHTS.

Auch das RECHTS ginge kürzer: in
J7: =RECHTS($B7&" "; LÄNGE($B7&" ")-FINDEN("◙";WECHSELN($B7&" ";" ";"◙";2);1))
allerdings bleiben da die Leerzeichen angehängt, was man wiederum durch
=Wechseln(obigeRechts-Formel;" ";"")
[ohne Positionsindex werden alle gewechselt] beheben könnte, aber da ist deshalb das Kopieren der Teil-Formel vorzuziehen.

Die Wortzahl ist begrenzt durch die Länge des Leerstrings, die man durch sinnvollen Einsatz von B7&Wiederholen(" ";Spalte()-nn) oder -Positionsunabhängig -
B7&Wiederholen(" ";Spalten($B7:Formelzelle)-Zwischenspalten)
variabel gestalten kann,
auch die manuelle Nachbesserung beim Kopieren könnte dann entfallen (hab ich aber jetzt keine Zeit mehr, auszuarbeiten, obwohls mich selber interessiert)

1

Blind-Antwort, siehe meinen Kommentar zur AW von merkurus

Was möchtest Du wissen?