17.08.2021, 14:31 (Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2021, 14:52 von Ollowain.)
Hallo zusammen,
bräuchte einen VBA-Experten. Folgende Problemstellung: Ich habe einen sehr langen String, in dem sich immer wieder bestimmte Zeichen wiederholen und ich den unterschiedlich langen Text dazwischen auslesen und in eigene Zellen schreiben möchte. Beispiel: Langer String in Zelle A1: "#A#Text1a#/A#irgendwasdazwischen#B#Text1b#/B#irgendwasdazwischen#A#Text2aa#/A#irgendwasdazwischen#B#Text2bb#/B#irgendwasdazwischen#A#Text3aaa#/A#irgendwasdazwischen#B#Text3bbb#/B#..." Jetzt hätte ich gerne in fortlaufenden Zellen der Spalte A und B die Infos ausgelesen, die jeweils zwischen #A# und #/A# bzw. zwischen #B# und #/B# stehen: A B 2: Text1a Text1b 3: Text2aa Text2bbb 4: Text3aaa Test3bbb ... Solange es noch Infos im String gibt, die dazu passen.
Hi, sorry - hätte man die Vorschau Option nutzen sollen. Hatte "<" und ">" Zeichen verwendet und das hat etwas das Beispiel zerstört.
Die verschiedenen Texte sollen nur verdeutlichen, dass es unterschiedlich lange Texte sein können. Deshalb wird auch die Split Funktion mit "Text" als Sucher nicht funktionieren.
17.08.2021, 16:03 (Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2021, 16:05 von Zwenn.)
Hallo
Das sind also öffnende und schließende Tags, zwischen denen Du den Inhalt auslesen willst. HTML wird es vermutlich nicht sein. Vielleicht ein Ausschnitt aus XML? Die Frage, die ich mir stelle ist, heißen die beiden einzigen verwendeten Tags A und B? Oder sind das auch nur Beispiele? Ich denke mit Deinem Beispieltext wird Hilfe schwierig, weil das immer etwas Fischen im Trüben ist. Lade eine Beispiel Text-Datei hoch, in der die original Tags enthalten sind. Wenn der Text dazwischen vertraulich ist, musst Du ihn ersetzen. Auf den kommt es ja nicht an, aber auf die Struktur des Gesamtstrings.
Aso, können öffnende und schließende spitze Klammern auch innerhalb der auszulesenden Texte vorkommen? Falls nicht, kann man die als Indikatoren nehmen, um den Text zu parsen.
'Zuerst an der schließenden spitzen Klammer splitten splitArray = Split(textToParse, ">")
'Das Array durchgehen. Jedes Element, das </A oder </B enthält, enthält auch gesuchten Text 'Elemente ohne </A oder </B verfallen For oneElement = 0 To UBound(splitArray) 'Auf </A prüfen If InStr(1, splitArray(oneElement), "</A") Then 'Text in Tabelle schreiben Cells(currRow, 1) = Trim(Replace(splitArray(oneElement), "</A", "")) End If
'Auf </B prüfen If InStr(1, splitArray(oneElement), "</B") Then 'Text in Tabelle schreiben Cells(currRow, 2) = Trim(Replace(splitArray(oneElement), "</B", "")) currRow = currRow + 1 End If Next oneElement End Sub
in dem genannten markierten Bezug C1:D999 nicht mit Eingabe, sondern mit Strg-Umsch-Eing abschließen (Formelarray). Fehlerwerte bekommst Du mit =WENNFEHLER(Formel;"") weg.
Hallo Zwenn, vielen Dank. Das geht schon absolut in die richtige Richtung und funktioniert auch problemlos für das gegebene Beispiel. Leider war das Beispiel wie ich jetzt merke nicht perfekt. Zusätzliche Herausforderung: Die konkreten Tags, zwischen denen ich die Texte auslesen möchte, sind ähnlich in der Bezeichnung. Konkret: "Bank" und "BankLeitzahl" ... Glaube das führt gerade dazu, dass das "A" im Bsp. immer zutrifft... und das macht Probleme. Wenn ich aber das ">" am Ende ergänze, funktioniert die "Suche starten" Funktion basierend auf ">" nicht mehr. Hoffe das war nachvollziehbar. :) VG
(20.08.2021, 12:27)Ollowain schrieb: ... Hoffe das war nachvollziehbar. :)
Hallo Ollowain,
leider sind Deine Ausführungen für mich nicht nachvollziehbar. Lies Dir bitte noch einmal mein erstes Posting durch, beantworte die Fragen daraus und vor allem, lade eine Beispieldatei hoch. Wie Du selbst schreibst, gibt es Probleme, weil die Tagnamen nicht erkannt werden (wenn ich das richtig verstanden habe). Wie soll denn jemand verstehen, was genau Du meinst, wenn nur Du die zu verknüpfende Information in Form der Original Ausgangsdaten kennst?
Noch ein gut gemeinter kleiner Hinweis. Es ist immer eine nette Geste, sich bei allen zu bedanken, die sich fruchtbar an der Diskussion beteiligen oder Dir sogar eine Löung anbieten. Einen Lösungsvorschlag zu ignorieren kommt hingegen sehr unhöflich/ geringschätzig rüber.
20.08.2021, 15:59 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2021, 16:00 von Ollowain.)
Hallo Zwenn, sorry, war nicht unhöflich gemeint. Ich hatte nur Probleme, die zweite Lösung überhaupt zu verstehen und habe mich deshalb auf deinen Vorschlag konzentriert. Natürlich bin ich dankbar für jede angebotene Hilfe.
Bzgl. den Fragen: - Nein, es ist kein html - Die Klammern kommen nicht in den Texten vor, die ich auslesen möchte - Das Problem entsteht (nach meinem Verständnis) gerade noch dadurch, dass die zwei "Identifier-Tags" - "Bank" und "Bankleitzahl" - beide mit "Bank" beginnen.
Hier nochmal ein Beispiel zur Verdeutlichung (oben die Eingabe / unten das gewünschte Ergebnis):