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

Wörter aus Matrix in Text ermitteln

Wörter aus Matrix in Text ermitteln
27.09.2022 12:40:08
MK
Hallo zusammen,
durch Hilfe des Forums bin ich vor einiger Zeit an folgende Formel gekommen:

(LINKS(TEIL([@CSANOTE];AGGREGAT(15;6;FINDEN(Matrix!$R$2:$R$92;[@CSANOTE];1)/(Matrix!$R$2:$R$92>0);1);99);FINDEN(" ";TEIL([@CSANOTE]; AGGREGAT(15;6;FINDEN(Matrix!$R$2:$R$92;[@CSANOTE];1)/(Matrix!$R$2:$R$92>0);1);99)&" ")-1)
Hiermit suche ich einen Benutzernamen (z.B. "KC-Test") aus einer Zelle links neben der Formel.
Alle zu suchenden Benutzernamen sind auf einem separatem Tabellenblatt hinterlegt:
KC-Test1
KC-Test2
KC-Test3
etc.
Die Formel versagt leider, wenn im Suchtext der Benutzer nicht separat steht
- Beispiel funktioniert nicht: KC-Test//
- Beispiel funktioniert: KC-Test //
Wie müsste man die Formel nun verändern oder eine andere Formel nutzen, damit er den Benutzernamen auch bei zusammengeschriebenen Dingen erkennt?
Lieben Dank vorab

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zeig doch mal....
27.09.2022 14:38:18
{Boris}
Hi,
...3 Beispieltexte, aus denen der Nutzername ermittelt werden soll.
In Deiner xl-Version (365) sollte das eventuell wesentlich einfacher gehen.
VG, Boris
Auf "klassische" Art...
27.09.2022 15:48:02
{Boris}
Hi,
ganz klassisch - bezogen auf E2:
=INDEX(Matrix!$R$2:$R$10;MIN(WENN(ISTZAHL(FINDEN(Matrix!$R$2:$R$10;A2));ZEILE($1:$9))))
und runterkopieren.
Für Deine Beispiele passt das.
VG, Boris
AW: Auf "klassische" Art...
27.09.2022 16:15:40
Daniel
passt, aber nur zufällig.
mach mal in A10 aus dem KC-Test9 ein KC-Test1.
Dann ist das Ergebnis nicht mehr KC-Test2 (der am weitesten rechts stehende), sondern KC-Test1, also der erste.
Gruß Daniel
Anzeige
Du hast ihm ja ne Lösung gegeben...
27.09.2022 16:32:32
{Boris}
Hi Daniel,
...damit sollte es ja nun wunschgemäß laufen.
VG, Boris
AW: Auf "klassische" Art...
27.09.2022 16:37:34
MK
Hallo Boris,
funktioniert bei der Testdatei perfekt.
In der echten Datei, trage ich dies in eine freie Spalte eines Datenbezugs aus Excel ein (Tabelle).
Hier variiert die Anzahl der Zeilen ständig, so dass das Ende ";Zeile($1:$9)" dann nicht mehr funktioniert.
Wie könnte man das ggf. lösen?
Vielen Dank vorab.
AW: Auf "klassische" Art...
27.09.2022 16:45:37
Daniel
Hi
das Zeile(1:9) bezieht sich auf die Anzahl der Zeilen deiner Matrix!R2:R10.
sinnvoller wäre hier folgende Formel, damit klar ist, wie das zusammenspielt und was zu ändern ist, wenn man die Formel für die Restdatei auf reale Daten anpasst.

=INDEX(Matrix!$R:$R;MIN(WENN(ISTZAHL(FINDEN(Matrix!$R$2:$R$10;A2));ZEILE(Matrix!$R$1:$R$9))))
aber wie ich schon an anderer stelle geschrieben habe, diese Formel gibt dir bei mehreren Benutzernamen im Text nicht denjenigen, der im Text am weitesten rechts steht, sondern den der in der Auflistung (Matrix) weiter oben steht.
Gruß Daniel
Anzeige
AW: Zeig doch mal....
27.09.2022 16:08:08
Daniel
Hi
so auch für ältere Excelversionen, mit zwei Hilfsspalten.
wenn du in deiner Excelversion die Hilfsspalten vermeiden willst, schau dir mal LET an:
D2: =AGGREGAT(14;6;FINDEN(Matrix!$R$2:$R$10;A2);1) findet die Startpostion des am weitesten rechts stehenden Nutzernamen aus der Liste
E2: =AGGREGAT(15;6;FINDEN({" ";"/";"-"};A2;D2+3);1) findet das erste Trennzeichen nach der Startposition (3. Parameter von Finden)
F2: =TEIL(A2;D2;E2-D2) schneidet dann den Text zwischen diesen beiden positionen aus
für deine Excelversion mit einer Hilfsspalte weniger:
D2: =AGGREGAT(14;6;FINDEN(Matrix!$R$2:$R$10;A2);1) findet die Startpostion des am weitesten rechts stehenden Nutzernamen aus der Liste
E2: =Filter(Matrix!$R$2:$R$10;Finden(Matrix!$R$2:$R$10;A2)=D2;"") sucht den Nutzernamen mit der gegebenen Position in der Liste
ggf kannst du hier auch die Formel aus D2 direkt in die Formel von E2 einsetzen um die Hilfsspalte zu vermeiden, ich kanns leider nicht testen.
Gruß Daniel
Anzeige
Zur xl365-Variante...
27.09.2022 17:02:42
{Boris}
Hi Daniel,
...ich weiß, Du kannst es nicht testen:
FILTER kann mit #WERT!-Fehlern nicht umgehen, daher:
=FILTER(Matrix!$R$2:$R$10;WENNFEHLER(FINDEN(Matrix!$R$2:$R$10;A2)=D2;);"")
Und ja - D und E kann man verschachteln:
=FILTER(Matrix!$R$2:$R$10;WENNFEHLER(FINDEN(Matrix!$R$2:$R$10;A2)=AGGREGAT(14;6; FINDEN(Matrix!$R$2:$R$10;A2);1););"")
VG, Boris
Danke
27.09.2022 22:50:29
Daniel
AW: Zeig doch mal....
27.09.2022 17:16:17
MK
Hallo Daniel,
auch dir lieben Dank.
Leider kommt es hier auch zu einigen Problemen.
Hier mal eine Testdatei mit den reellen Zuständen.
Die Originaltabelle hat tatsächlich ca. 500.000 Zeilen.
https://www.herber.de/bbs/user/155404.xlsx
Anzeige
AW: Zeig doch mal....
27.09.2022 22:48:44
Daniel
Hi
Deine Datei funktioniert bei mir nicht, da sind noch externe Bezüge drin.
Beseitigen die mal und lade erneut hoch.
Deine Problembeschreibung ist zu allgemein, um daraus was ableiten zu können, du solltest da schon genauer beschreiben.
Hast du mal die Korrektur für meinen zweiten Ansatz von Boris getestet?
Gruß Daniel
AW: Zeig doch mal....
28.09.2022 08:41:26
MK
Hallo Daniel,
hier nochmal ohne Bezüge:
https://www.herber.de/bbs/user/155411.xlsx
Die korrigierte Formel hat auch leider nicht funktioniert.
Anzeige
Formeln für Deine Beispieldatei
28.09.2022 09:28:05
{Boris}
Hi,
J16:
=AGGREGAT(14;6;WENNFEHLER(FINDEN(Matrix!$R$2:$R$40;[@ABC]););1)
K16:
=FILTER(Matrix!$R$2:$R$40;WENNFEHLER(FINDEN(Matrix!$R$2:$R$40;H16)=[@1];);"")
Vorher Bereich J16:K25 leeren - dann werden die Formeln automatisch nach unten ausgefüllt.
VG, Boris
AW: Formeln für Deine Beispieldatei
28.09.2022 11:07:18
MK
Hallo Boris,
den Eintrag hatte ich wohl übersehen.
Funktioniert perfekt.
Lieben Dank
AW: Zeig doch mal....
28.09.2022 09:31:12
Daniel
Hi
In der Spalte I hast du fest die Zahl 19 reingeschrieben. Dafür hatte ich aber ein Formel angegeben, die müsstest du einsetzen, nicht den festen Wert.
Außerdem hättest du feststellen müssen, das dee wert 17 sein muss und nicht 19 (Zählen sollte man können)
In der Spalte J hast du im unteren Teil die Formel von Boris nicht eingesetzt!
Im oberen Teil müsstest du zwei Ergänzungen in der Formel machen:
1. wenn der Name auch am Ende stehen kann, sollte am Ende auch das Trennzeichen stehen, da nach diesem gesucht wird, dh man musste das in der Formel ergänzen, damit immer ein Zeichen aus der Klammer nach dem Namen folgt, auch wenn dieser am Ende steht.
2. in der Klammer müssen alle mögliche n Zeichen aufgelistet werden, die direkt nach dem Namen folgen können, dh. Ggf musst du dir Klammer erweitern:
...FINDEN({" ";"/";"-";"_"};H3&" ";J3+3)...
Anzeige
AW: Zeig doch mal....
28.09.2022 10:19:05
MK
Danke,
dennoch finde ich den Satz "(Zählen sollte man können)" schon recht bedenklich.
Warum auch immer war hier die Formel nicht mehr drin. Hatte ich nicht gesehen. Sorry.
Ich denke vom Zeitaufwand und Lerneffekt wäre es bedeutend einfacher, mir das in der Datei selbst zu zeigen.
Bitte nicht falsch verstehen, ihr sollt nicht die Arbeit für mich machen, jedoch bekomme ich dies augenscheinlich nicht hin.
Vielleicht habe ich meinen Excel Kenntnis-Grad auch zu hoch angesetzt.
Es kann leider jedes Zeichen direkt vor oder nach den Nutzernamen kommen. Alle Möglichkeiten aufzuführen, sprengt glaub ich den Rahmen
und die Formel.
Gibt es ggf. Alternativen, die den Nutzernamen auch mitten in einer Ansammlung von Zeichen finden und wieder ausgeben würde?
Nochmals, lieben Dank vorab.
Hier nochmal die korrigierte Datei:
https://www.herber.de/bbs/user/155415.xlsx
Anzeige
AW: Zeig doch mal....
28.09.2022 10:43:47
{Boris}
Hi,

Ich denke vom Zeitaufwand und Lerneffekt wäre es bedeutend einfacher, mir das in der Datei selbst zu zeigen.
Ich hab Dir doch 2 Formeln - basierend auf Daniels Lösung - gepostet - mit exakter Angabe der Zelladressen. https://www.herber.de/forum/messages/1900772.html
Das ist doch nur Copy & Paste. Hast Du sie mal ausprobiert?
VG, Boris
AW: Zeig doch mal....
28.09.2022 13:04:05
MK
Hallo Boris,
das hatte ich übersehen.
Funktioniert einwandfrei ! Vielen Dank.
AW: Zeig doch mal....
28.09.2022 11:14:01
Daniel
Hi
einfacher für dich, aber nicht einfacher für mich.
da du für mich außer einem Dankeschön (vielleicht), keine konkrete Gegenleistung erbringst, habe bitte Verständnis dafür, dass dich von dir etwas aktive Mitarbeit erwarte (wenn du natürlich eine idee hättest, was du für mich tun könntest, können wir uns da natürlich drüber unterhalten.
Wenn es keine einschränkbare Menge von Zeichen gibt, die die Namen abschließen sondern das jedes Zeichen sein kann, fällt meine erste Lösung raus.
dann musst du die FILTER-Variante verwenden, aber bitte mit der Korrektur von Boris.
beim Finden der Startposition dürfen nur echte Namen verwendet werden.
So wie du das jetzt eingestellt hast, wird auch nach dem "-" gesucht und das wird immer gefunden und steht immer rechts vom KC, daher ist das die Fundstelle.
Formeltechnisch das einfachste wäre hier, den Zellbereich in der Formel nur auf den Bereich einzuschränken, der der echte Daten enthält.
oder du schließt diese Werte aus, wenn man davon ausgeht dass der Name immer aus drei Zeichen + Name besteht, könnte man das so ergänzen für Spalte J, am weitesten rechts liegende Startpostion eines Namens:

=AGGREGAT(14;6;WENN(LÄNGE(Matrix!$R$2:$R$100)>3;FINDEN(Matrix!$R$2:$R$100;H3));1)
und wie gesagt, für das Ermitteln des Namens dann die FilterFormel von Boris verwenden, oder vielleicht auch das hier (wieder ungetestet)

=Textverketten("; ";Wahr;Wenn(Wenn(IstZahl(Finden(Matrix!$R$2:$R$100);H3)); Wenn(Finden(Matrix!$R$2:$R$100;H3)=J3;Matrix!$R$2:$R$100);"");"")) 
Gruß Daniel
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige