Zeichen zwischen zwei Pipes ersetzen in Loop, und ersten Pipestring komplett löschen

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von mw1302.

    Zeichen zwischen zwei Pipes ersetzen in Loop, und ersten Pipestring komplett löschen

    Hallo miteinander,

    ich bin relativ neu im Thema VBA und habe hier zu meiner Fragestellung schon die Suchmaschine betätigt. Habe auch gute Ansätze gefunden, komme allerdings nicht weiter.
    Ich hoffe ihr könnt mir weiterhelfen!

    Nochmal kurz die Erklärung.
    Ich habe in der ersten Spalte (A) einen Text stehen wo Keywords immer wieder durch Pipes getrennt sind. Hier einmal ein Beispiel
    |keyword1|keyword2|keyword3|...

    ich möchte es jetzt gerne nebendrann in Spalte B wie folgt stehen haben
    keyword2, keyword3, ...

    Also der erste Pipestring (keyword1) soll komplett ausgeschnitten werden und ab dem zweiten sollen die keywords immer durch ein Komma getrennt werden.

    Ich hoffe ich konnte das ganze einigermaßen plausibel erklären?!

    Für eure Hilfe und Denkanstöße wäre ich sehr dankbar!

    Beste Grüße

    mw
    Wenn du dich auf das Format verlassen kannst:
    Sowas in einer Schleife:

    Visual Basic-Quellcode

    1. Cells(1,2).Value=Replace(Mid(Cells(1,1).Value,2),"|",", ")
    Ansonsten gäbe es noch Varianten mit Split / Join.



    Aber:
    Willst du nicht eigentlich eine "Text in Spalten"-Funktion?

    Visual Basic-Quellcode

    1. Range("A:A").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, Other:=True, OtherChar:="|"
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo,

    danke erstmal für deine Antwort!

    Also ich kann mich auf die Formatierung dahingehend verlassen das es Wörter ohne Umlaute und maximal durch ein Leerzeichen getrennt sind.
    Und ich möchte NICHT das die einzelnen Keywords dann in verschiedenen Spalten stehen.

    also nochmal zur genaueren Veranschaulichung.

    so sollte das danach aussehen. Spalte A existiert bereits mit Werden wie z.B. (|Reagions and Locations|Europe|Germany|Berlin)... und Reagions and Locations soll dann nicht in Spalte B übernommen werden, sondern nur die darauffolgenden Wörter (diese dann allerdings durch ein Komma getrennt).

    Spalte A
    Spalte B
    |keyword1|keyword2|
    keyword2
    |keyword1|keyword2|keyword3|keyword4|keyword5|
    keyword2, keyword3, keyword4, keyword5

    Ich habe deine zwei Ansätze probiert, allerdings bekomme ich sie nicht passend zum laufen :(

    Vielleicht ist es ja jetzt klarer?!

    Vielen Dank schon mal!

    Beste Grüße
    mw

    mw1302 schrieb:

    Ich habe deine zwei Ansätze probiert, allerdings bekomme ich sie nicht passend zum laufen
    Es wäre in solchen Fällen angebracht, deine Versuche hier zu veröffentlichen, dass man sie korrigieren kann.

    Visual Basic-Quellcode

    1. For r = 1 to Cells(Rows.Count,1).End(xlup).Row
    2. a=Split(Cells(r,1).Value,"|")
    3. b=""
    4. For i = 2 to UBound(a)
    5. b=", " & a(i)
    6. Next
    7. Cells(r,2).Value=Mid(b,3)
    8. Next
    ungetestet.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Besten Dank für deinen Quellcode!

    Also das kommt der Lösung meines Problems schon näher :)

    Allerdings gibt es (mir) noch unverständliche ergebnisse aus.

    es gibt nämlich nur bis inklusive der dritten Zeile das richtige aus.

    Ab dann wird in Spalte B nur noch das jeweils letzte Keyword angezeigt und die anderen werden nicht übernommen.

    Ich werde auf dieser Basis mal ein wenig weiterbasteln.

    Wem noch etwas einfällt, immer gern ;)