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

Einzelne Wörter aus Satz ziehen

Einzelne Wörter aus Satz ziehen
08.06.2020 17:55:52
Cadura
Hallo zusammen,
ich hoffe, ich bin mit meinem Problemchen an die richtige Stelle geraten. Ich habe eine Excel-Tabelle, wo in der Spale A (ab Zeile 2) Sätze eingetragen werden. In Spalte B (ab Zeile 2) stehen verschiedene Wörter. Beide Listen gehen nach unten X-beliebig lange weiter.
In Spalte C sollen neben jedem Satz aus Spalte A in der entsprechenden Zeile die Wörter, die in der Wortliste in Spalte B stehen durch Kommata getrennt, angegeben werden.
Ich habe es als Beispiel für den Satz in Spalte A, Zeile 2 einmal per Hand reingeschrieben und würde mich freuen, wenn mir jemand einen Tipp geben kann, wie ich das, z.B. mit diesem Sverweis hinbekomme. Ich Danke Euch!
Cati
Hier meine Beipieldatei:
https://www.herber.de/bbs/user/138143.xlsx

42
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
vorgegebene Wörter aus Satz ziehen
08.06.2020 18:59:37
WF
Hi,
folgende Arrayformel in C2:
{=WENNFEHLER(INDEX($B:$B;KKLEINSTE(WENN(ISTZAHL(SUCHEN($B$2:$B$12;$A2));ZEILE(X$2:X$12));SPALTE(A1))) &", ";"") &D2}}
ein paar Spalten nach rechts und dann alle Zellen runter kopieren
WF
alles in einer Zelle würde ne Bombenlegerformel
Bombenleger adé mit TEXTVERKETTEN()
08.06.2020 20:18:53
lupo1
C2:
=TEXTVERKETTEN(", ";;WENNFEHLER(SVERWEIS(
GLÄTTEN(TEIL(WECHSELN(A2;" ";WIEDERHOLEN(" ";199));SPALTE(A1:Z1)*199-198;199));
B$2:B$12;1;);""))

Anzeige
Die Sauferei morgends war aber grandios.
08.06.2020 20:41:09
WF
Hi,
kommt da das richtige raus - nämlich nichts ?
Mit Excel-2013 kann ich das ja nicht testen.
Bei mir ist das Ergebnis: morgen, ab, an, auf,
also komplett daneben
WF
ergo bibamus - Du hast gewonnen
08.06.2020 21:48:54
WF
.
AW: Die Sauferei morgends war aber grandios.
08.06.2020 22:29:52
Cadura
Hi, ich danke Euch, aber hier funzt bei mir die formel nicht (#Name?):
=TEXTVERKETTEN(", ";;WENNFEHLER(SVERWEIS(
GLÄTTEN(TEIL(WECHSELN(A2;" ";WIEDERHOLEN(" ";199));SPALTE(A1:Z1)*199-198;199));
B$2:B$12;1;);""))
Anzeige
Wenn Du kein xl365 hast (oder LibreOffice), ...
08.06.2020 22:51:48
lupo1
... dann kannst Du es in XL-Online oder GDocs (als textjoin) kostenlos ausprobieren.
Sonst keine Möglichkeit.
Sonst keine Möglichkeit?
09.06.2020 05:44:21
Luc:?
Aber Lupo,
es gibt doch auch noch UDFs! ;-]
Was mich allerdings verwundert ist, dass Deine doch sehr komplexe Fml als normale Fml (oder war's doch 'ne singulare MatrixFml?) fktioniert. Wenn ich nämlich TEXTVERKETTEN durch die UDF VJoin ersetze, benötige ich eine duale MatrixFml (also Auswahl von 2 Zellen). Unter Zuhilfenahme von WAHL (um den überflüssigen Wert zu eliminieren) sähe Deine Fml dann so aus:
{=WAHL({1.2};"";VJoin(WENNFEHLER(INDEX(B$2:B$12;VERGLEICH(GLÄTTEN(TEIL(WECHSELN(A2;" ";
WIEDERHOLEN(" ";199));SPALTE(A1:Z1)*199-198;199));B$2:B$12;0));"");",";-1))}
Aber das ist mir natürlich zu umständlich und aufwendig, weshalb ich andere Ansätze bevorzuge, zB mit der UDF VSplit als singulare MatrixFml:
{=VJoin(MTRANS(WENN(VSplit(A2)=B$2:B$12;B$2:B$12;""));",";-1)}
MTRANS dient hier iW dazu, die gewünschte Reihenfolge zu erzielen.
Aber es geht auch noch anders, ohne Splitten, falls die Reihenfolge auch an der Liste orientiert sein darf (alles singulare MxFmln):
{=VJoin(WENN(VLike(KLEIN(A2);"*"&KLEIN(B$2:B$12)&"*");B$2:B$12;"");",";-1)}
{=VJoin(WENN(ISTZAHL(VERGLEICH("*"&B$2:B$12&"*";A2;0));B$2:B$12;"");",";-1)}
{=VJoin(WENN(ISTZAHL(SUCHEN(B$2:B$12;A2));B$2:B$12;"");",";-1)}
…und auch mit 3 UDFs:
{=TEIL(VJoin(DataSet("";NoErrRange(B$2:B$12;;ISTZAHL(SUCHEN(B$2:B$12;A2)));;;1); ",");2;99) }
Aber das ist denn doch zu umständlich und mit folgd normalen Fml inkl 3 UDFs eleganter gelöst, allerdings wieder mit Splitten, dafür aber in der WunschReihenfolge:
=VJoin(DataSet(VSplit(A2);B$2:B$12;1);",";-1)
Da kommt wohl keine Fml aus Xl-Fktt mehr mit…! ;-)
Die verwendeten UDFs sind alle im Archiv zu finden und zigmal auch dort verlinkt. Wer daran Interesse hat, mitteilen. Dann setze ich die (aktuellen) Links hier noch nach.
Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
=SPLITTEN() fehlt noch als XLFkt. - kommt irgendw.
09.06.2020 07:21:15
lupo1
GDocs hat sie schon. Dann - endlich - C2:
=TEXTVERKETTEN(", ";;WENNFEHLER(SVERWEIS(
SPLITTEN(A2;" ");
B$2:B$12;1;);""))

Nochmal: Das gibt es noch nicht! Wir vermuten, dass es das geben könnte.
Warum komplexe Fml nicht mehr als Matrixfml nötig?
09.06.2020 08:32:58
lupo1
Weil xl365 das übernimmt. Es ist dort nicht zuletzt notwendige Funktionalität für dynamische Arrays im Blatt. Ein dynamisches Array wird in eine Zelle eingegeben und füllt sich unten und rechts aus. Liegt etwas im Weg (also eine nichtleere Zelle), gibt es den neuen Fehler #ÜBERLAUF!.
Das automatische Interpretieren kann xl365 höchstens dann nicht, wenn der Inhalt der Formel keine automatische Interpretation als Matrixformel zulässt.
Verwendet man zusätzlich Iteration, kann dieses dynamische Array sogar auf Bestandteile irgendwo innerhalb von sich selbst Bezug nehmen: http://www.office-hilfe.com/support/showthread.php/31942
Das hätte ich mir immer schon mal z.B. in benannten Formeln gewünscht.
Anzeige
Das, was mich verwunderte, war ja nicht DAS ...
09.06.2020 12:58:10
Luc:?
…grundsätzlich, Lupo,
sondern dass die Fkt ein Ausdrucksargument, dass in Xl14/2010 nur vollständig berechnet und ausgegeben wird, wenn man wenigstens 2 Zellen auswählt, obwohl nur ein Ergebniswert erwartet wird (duale MatrixFml), mit seinem vollständigen Ergebnis verwendet. Möglicherweise bzw wahrscheinlich ist das auch auf den Umbau der Interpreter-Wirkung zurückzuführen, weil anderenfalls die Fkt auch solche Argumente nochmals in EigenRegie auswerten müsste. µS hat da wohl einige Filter mehr abgeschaltet bzw übergangen als von mir erwartet.
Was Splitten betrifft, das wurde schon vor einiger Zeit angekündigt und soll auf der Text-in-Spalten-Methode von Xl beruhen. Wohl so wie weiland aus der Methode Teilergebnisse die Fkt TEILERGEBNIS abgeleitet wurde (wahrscheinlich war's aber eher umgekehrt und die Fkt wird in der wesentlich umfangreicheren Methode intern verwendet).
Aber da das alles auch nur der „Tröpfchen“-Verkaufsstrategie von µS untergeordnet ist, interessiert mich das wenig, zumal kaum zu erwarten ist, das gerade diese Fkt dann mehr leistet als meine diversen Split-basierten UDFs…
Luc :-?
Anzeige
Da hast Du sicherlich recht, aber VBA ist oft ...
09.06.2020 15:09:15
lupo1
... in Unternehmen nicht erwünscht.
Sogar bei PQ gibt es gelegentlich Verbote.
GDocs hat SPLIT schon. Und TEXTJOIN war dort wohl auch eher, als bei Excel.
Naja, weil diese Fktt eben naheliegend sind ...
09.06.2020 19:19:47
Luc:?
…bei TextVerarbeitung, Lupo;
und VBA hat's schon >20 Jahre, wenn auch nur sehr minimalistisch. Und ältere Calc-Konkurrenz hatte evtl auch schon so etwas. Für PQ hat ja µS auch >20 Jahre nach anderer ähnlicher Software gebraucht. Tja, und dann fingen ihnen die Felle weg zu schwimmen an…
Und was das VBA-Unerwünscht betrifft, ist das doch reine Panikmache von Admins, die davon keine Ahnung haben und dann die Nutzer zu Lasten der Arbeitsperformance im „manuellen Regen“ stehen lassen. Das ist doch nur gerechtfertigt, wenn ein Betrieb eine eigene EDV-Abteilung hat, die auch Derartiges auf Wunsch pgmmiert.
Luc :-?
Anzeige
Das ist alles richtig.
09.06.2020 19:48:04
lupo1
Nur würde ich vermutlich als Chef auch nicht VBA bei jedem haben wollen. Zumindest nicht verbunden im lokalen Netzwerk oder verbunden mit dem Internet.
Denn - schwupps - könnte jmd. einem ungeneigten Mitarbeiter einen Schadcode mailen, und schon geht es los.
Auf der anderen Seite konnte die EDV-Abteilung auch schon vor 50 Jahren die Kundenbeziehungen als Listen ausdrucken und meistbietend an die Konkurrenz weitergeben. Es kommt halt immer drauf an.
Das ist alles richtig.
09.06.2020 19:48:05
lupo1
Nur würde ich vermutlich als Chef auch nicht VBA bei jedem haben wollen. Zumindest nicht verbunden im lokalen Netzwerk oder verbunden mit dem Internet.
Denn - schwupps - könnte jmd. einem ungeneigten Mitarbeiter einen Schadcode mailen, und schon geht es los.
Auf der anderen Seite konnte die EDV-Abteilung auch schon vor 50 Jahren die Kundenbeziehungen als Listen ausdrucken und meistbietend an die Konkurrenz weitergeben. Es kommt halt immer drauf an.
Anzeige
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 09:53:21
Cadura
Ich bin mittlerweile leider etwas verwirrt, ich hatte gehofft, da gibt es eine Lösung, die ich "einfach" direkt in Excel eingeben könnte. Ich habe mal etwas gespielt und irgendwie funzt das nur begrenzt.
Beispiel Datei anbei. Danke Euch für's Forschen und vorschlagen ;)
https://www.herber.de/bbs/user/138154.xlsx
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 10:49:45
onur
Was ist denn mit MEINER Lösung?
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 11:12:07
Cadura
@onur
die gefällt mir super, aber da gibt es wohl noch eine Sache, sobald ich den button ein zweites mal drücke, fügt es die Ergebnisse doppelt ein:
Siehe Beispiel:
https://www.herber.de/bbs/user/138158.xlsm
Anzeige
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 11:14:06
onur
Das war nur ein Beispiel - kann man ändern, wenn man die Spalte am Anfang des Makros löschen lässt.
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 11:52:22
Cadura
@onur
stimmt, das habe ich jetzt mit eingefügt und es läuft nahezu perfekt. Danke Dir!
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 11:56:59
Cadura
Kannst du mir Deine Datei bitte bitte noch einmal hochladen, ich finde sie im Anhang deiner ersten Nachricht nicht mehr und habe beim speichern einen fehler gemacht!!!
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 12:03:29
onur
Erst wenn ich wieder zu Hause bin.
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 12:09:52
Cadura
Danke Dir, Du bist klasse!
Viele Grüße
Cati
AW: Einzelne Wörter aus Satz ziehen
10.06.2020 08:10:01
Cadura
Danke Dir vielmals!
Gerne !
10.06.2020 08:26:33
onur
AW: Gerne !
10.06.2020 08:45:10
Cadura
Doch noch eine Frage, wie kann ich denn festlegen, dass nur genau die Wörter aus der Liste gesucht werden und nicht auch deren Bestandteile?
Beispiel, in der Wortspalte B stehet "kein" und "auf keinen Fall", wenn jetzt der Satz, "Heute habe ich auf keinen Fall Zeit" in Spalte A eingegeben werden würde, gibt er in C "auf keinen Fall, kein" aus, weil kein ja Bestandteil von "keinen" ist und auch in der Liste steht? Sorry, konfus, Beispiel ist dabei.
https://www.herber.de/bbs/user/138180.xlsm
Danke ;)
Anzeige
AW: Gerne !
10.06.2020 10:18:56
onur
Hinter der zeile
Str= ....
Einfach
Str= “ “ & str & “ “
schreiben
Und hinter
su= .... (oder such=?)
su= “ “ & su & “ “
bzw such.
AW: Gerne !
10.06.2020 14:06:30
Cadura
Danke für Deine Hilfe, das versuche ich mal. Hoffe ich zerschieße das nicht alles ;)
Sieht das dann so aus?
str = UCase(Cells(z, 1))“ “ & str & “ “
Weil so geht's nicht, das muss bestimmt in die Klammern, oder?
AW: Gerne !
10.06.2020 18:23:35
onur
https://www.herber.de/bbs/user/138199.xlsm
Aber dein Beispiel ist Murks, da das WORT "kein" nicht auftaucht, sonedern nur "keinen", also darf der Code "kein" NICHT finden.
AW: Gerne !
11.06.2020 09:35:22
Cadura
Absolut klasse. 1000 Dank!
AW: Einzelne Wörter aus Satz ziehen
09.06.2020 20:33:58
Daniel
"einfach" gibt es in diesem Fall nicht
Excel ist ist als Tabellenkalkulation nicht sonderlich gut mit Textverarbeitungsfunktionen ausgestattet.
Das von dir gewünschte ist mit "einfachen" Standardexcel nur mit hohem manuellen Aufwand lösbar.
Nur in Office365 und OfficeMobile ist Funktionen vorhanden, die die Aufgabe direkt per Formel lösbar machen.
Eine mögliche Lösung für Excel365 hat dir Lupo1 gezeigt.
In älteren Excelvarianten bleibt dir dann nur VBA als Lösungsweg. Mit VBA lässt sich die Aufgabe wiederum recht leicht lösen, da hier die notwendigen Funktionen vorhanden sind.
Da wurden dir drei verschiedene Ansätze gezeigt:
- als direkte Makrobearbeitung per Knopfdruck
- Erstellung einer selbstgeschriebenen Funktion in zwei Varianten.
a) als speziell auf das Problem zugeschnittene Funktion mit sehr kurzem, einfachen und leicht verständlichen VBA, welches auch von Laien erstellt und gewartet werden kann
b) mit selbstgeschriebenen allgemeinen Funktionen, die die bisher fehlenden Funktionen nachbilden.
Problem ist hier, dass der Code für diese allgemeinen Funktionen deutlich komplizierter ist und die fertige Formel dann auch noch aus mehreren solcher Funktionen zusammengesetzt werden muss.
b) ist also deutlich komplexer als a), würde aber den Vorteil bieten, dass du ggf auch an andere Stelle für andere Aufgaben einsetzten könnest, sofern du versteht, was sie alles können und wie sie parametrisiert werden müssen (das musst du aber alleine herausfinden, da der Autor dieser Funktionen dur zwar gerne den Code bereit stellt, aber sein weiterer Support insbesondere der Erklärung wie diese Funktionen denn genau funktionieren erfahrungsgemäß eher spärlich ist.
Gruß Daniel
AW: Einzelne Wörter aus Satz ziehen: VBA
09.06.2020 10:29:10
MCO
Hallo Cati!
Per VBA recht einfach zu lösen:

A B C
Ab morgen wird alles besser heute ab, morgen, besser
Dieser Test ist zufällig morgen Test, zufällig
zufällig
ab

A B C
Ab morgen wird alles besser heute =wortsuche(A2)
Dieser Test ist zufällig morgen =wortsuche(A3)
zufällig
ab

Function wortsuche(Satz As String)
Dim celltext As String
Dim Wörter_arr As Variant
Dim i As Long
Wörter_arr = Split(Satz, " ")
For i = 0 To UBound(Wörter_arr)
Set gef = Range("B:B").Find(Wörter_arr(i))
If Not gef Is Nothing Then celltext = celltext & ", " & gef
Next i
wortsuche = Mid(celltext, 3, Len(celltext))
End Function
Gruß, MCO
AW: Einzelne Wörter aus Satz ziehen: VBA
09.06.2020 11:13:51
Cadura
@MCO
das gefällt mir super, läuft auch zügig und schön, aber irgendwie gibt es Ausreißer bei den Treffern, ich habe da jetzt mal ein paar Tests laufen gehabt und ich finde in jeder Zeile Wörter, die gar nicht im Satz stehen?
Siehe Beispiel:
https://www.herber.de/bbs/user/138159.xlsm
Herzlichen Dank für dein (Des)Interesse ...
09.06.2020 13:22:25
Luc:?
…an meiner Lösung, Cadura,
denn mit der gäbe es das Problem nicht:
=VJoin(DataSet(VSplit(A2);B2:B385;1);",";-1)
…ermittelt als Ergebnis Ab,morgen bzw Test,besonders,gut.
Ein weiterer Vorteil dieser Fml-Lösung mit UDFs ist, dass diese alle voll argumentierbar und deshalb auch in anderen Zusammenhängen einsetzbar sind, sowie sich in das Xl-Fktssystem einfügen und deshalb mit Xl-Fktt kombiniert wdn können. Sie erfüllen also genau wie Xl-Fktt GeneralistenAnsprüche und sind nicht wie MCOs UDF auf einen einzigen Anwendungszweck und -fall festgelegt.
ArchivLinks:
DataSet (Vs1.3) https://www.herber.de/forum/archiv/1504to1508/1507939_InteressentenInfo_zum_WE.html#1508954
VJoin (Vs1.4) und VSplit (Vs1.1) https://www.herber.de/bbs/user/99024.xlsm
Luc :-?
AW: Herzlichen Dank für dein (Des)Interesse ...
09.06.2020 13:41:54
Cadura
Sorry, das hat nichts mit Desinteresse zu tun, ich verstehe es einfach nicht. So weit bin ich bei Excel lange noch nicht, aber wenn ich in Spalte C2 Deine Formel eingebe:
=VJoin(DataSet(VSplit(A2);B$2:B$12;1);",";-1)
bekomme ich nur #Name? ausgegeben. Daher hatte ich versucht, zu verstehen, was da überhaupt passieren soll und bin einfach gescheitert.
LG
Cati
Du hast doch auch MCOs UDF an der ...
09.06.2020 13:56:42
Luc:?
…richtigen Stelle in das VBA-Projekt deiner Mappe eingefügt, Cati,
dann dürfte es doch kein Problem sein, meine 3 UDFs dort einzufügen, zumal 2 davon in einer BspMappe schon an richtiger Stelle stehen.
Oben hatte ich ja geschrieben, dass sich Interessenten an den UDFs, die nicht selbst nach ihnen oder den Links zu ihnen im Archiv suchen wollen, melden sollen. Das hätte mir heute früh zu lange gedauert, weil das ja insgesamt auch ein paar UDFs mehr waren.
#NAME? deutet immer darauf hin, dass Xl ein Name, hier einer UDF, nicht bekannt ist. Er wird Xl automatisch bekannt, wenn die UDF in einem aktiven Xl-AddIn steht, nur der jeweiligen Mappe, wenn die UDF in deren VBA-Projekt eingetragen wurde (s.BspMappe mit VSplit/VJoin).
Luc :-?
Also doch! Keine AW ist auch eine! :-[ owT
11.06.2020 18:32:32
Luc:?
:-?

183 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige