Zeichenfolge in Zelle auslesen und an anderer Stelle einfügen

  • Excel

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von tempest.

    Zeichenfolge in Zelle auslesen und an anderer Stelle einfügen

    Hallo zusammen,

    ich habe eine .csv Datei mit + 3000 Artikeln.

    In der 2ten Spalte sind die Beschreibungen der Artikel. Der Inhalt ist in ein html Gerüst eingepflegt.

    Beispiele:

    HTML-Quellcode

    1. <ul><li>100% Leinen </li><li>42 (44-46) 46 (48-50) </li></ul><h3>Maße &amp; Passform</h3><p>Maße bei Größe *</p><ul><li>Gesamtl&auml;nge 114cm </li><li>Brustumfang 112cm </li><li>L&auml;nge und Weite sind den Gr&ouml;&szlig;en angepasst</li></ul>


    oder

    HTML-Quellcode

    1. <ul><li>100% Leinen </li><li>42 (44-46) 46 (48-50) </li></ul><h3>Maße &amp; Passform</h3><p>Maße bei Größe *</p><ul><li>Gesamtl&auml;nge 114cm </li><li>Brustumfang 112cm </li><li>L&auml;nge und Weite sind den Gr&ouml;&szlig;en angepasst</li></ul>


    oder

    HTML-Quellcode

    1. <ul><li>100% Polyester </li><li>T1 (34) T2 (36) T3 (38) </li></ul><h3>Maße &amp; Passform</h3><p>Maße bei Größe *</p><ul><li>Gesamtl&auml;nge 77cm </li><li>Brustumfang 80cm</li></ul>


    Der Aufbau des Inhalts ist in der Regel vom html Gerüst gleich.

    Ich möchte den * durch den Wert innerhalb der ersten Klammer, Beispiel 1 oben 44-46, ersetzen und den Inhalt und den Code des besagten li löschen also, das

    HTML-Quellcode

    1. <li>42 (44-46) 46 (48-50) </li>


    soll weg....

    Danke für Tips/Hilfe

    Gruß

    Jürgen

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Ich nehme mal an, dein Problem ist nur das etwas kompliziertere Ersetzen, nicht das Auslesen und Schreiben von Zellen.

    Dafür kann man reguläre Ausdrücke verwenden, die, wie ich gerade eben erst gelesen habe, auch in VBA möglich sind. Hier eine Anleitung: vba-tutorial.de/applikation/regexp.htm

    Über die Seite regex101.com/ kann man seine regulären Ausdrücke prüfen (direkt mit Suchen/Ersetzen).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Danke Marcus,

    ich hatte gehofft, kurzfristig Hilfe zu bekommen ?( ....habe mir die Links angesehen und ein bischen "versucht" das ganze zu verstehen.....

    Bin kein Informatiker, helfe nur meiner Frau bei ihrem online Shop mit meinen "vorhandenen" Datenbank und html Kenntnissen..... :)

    Vielleicht bekomme ich das ja trotzdem hin....

    Danke

    Gruß

    Jürgen
    Nee, so ne Art von Textersetzung/-anpassung ist komplizierter als man denkt. Da hat sich so mancher die Zähne dran ausgebissen. Außer Chuck Norris :rolleyes:
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub test()
    3. Dim t$, t2$, t3$, p1&, p2&, k1&, k2&
    4. t = "<ul><li>100% Leinen </li><li>42 (44-46) 46 (48-50) </li></ul><h3>Maße &amp;" & _
    5. "Passform</h3><p>Maße bei Größe *</p><ul><li>Gesamtl&auml;nge 114cm" & _
    6. "</li><li>Brustumfang 112cm </li><li>L&auml;nge und Weite sind den Gr&ouml;&szlig;en angepasst</li></ul>"
    7. k1 = InStr(t, "(")
    8. k2 = InStr(t, ")")
    9. p1 = InStrRev(t, "<", k1)
    10. p2 = InStr(k2, t, ">")
    11. t2 = Mid$(t, k1, k2 - k1 + 1)
    12. t3 = Mid$(t, p1, p2 - p1 + 1)
    13. t = Replace(t, "*", t2)
    14. t = Replace(t, t3, "")
    15. MsgBox t
    16. End Sub
    Danke..... :)

    das scheint zu funktionieren.....lediglich die Klammer um den Wert 44-46 sollte nicht mitgezogen werden.

    Aber wie kann ich das jetzt über meine Datei laufen lassen, bzw. wie weise ich das meinem Datenblatt zu?

    Nochmals Danke....

    Gruß

    Jürgen
    … die Klammer um den Wert 44-46 sollte nicht mitgezogen werden.


    Visual Basic-Quellcode

    1. ...
    2. t2 = Mid$(t, k1 + 1, k2 - k1 - 1)
    3. ...

    Falls Leerzeichen davor oder dahinter eingefügt werden sollen:

    Visual Basic-Quellcode

    1. t2 = " " & Mid$(t, k1 + 1, k2 - k1 - 1) & " "


    Aber wie kann ich das jetzt über meine Datei laufen lassen, bzw. wie weise ich das meinem Datenblatt zu?


    Soll die csv geändert werden oder die Excel-Tabelle oder wie oder was?

    Zeig mal eine echte Beispieldatei als Dateianhang. (Min. 3 Datensätze).
    Hallo,

    die .csv exportiere ich aus der DB und öffne sie in Excel...danach speichere ich das ganze wieder als .csv und importiere es in die DB.

    Die "bearbeiteten" Daten aus Spalte B könnten in Spalte C landen, dann kann ich das nochmal bei Fehlern nachvollziehen/prüfen.

    Es gibt leider Datensätze die von der Struktur abweichen (Beispiel Datei rot in Zeile 22), wäre gut, wenn diese dann einfach übersprungen werden (Spalte C leer bleibt)....

    Danke für die Hilfe

    Hier noch mein angepasster "Code" den ich mir aus deiner Vorlage zusammengebastelt habe, mit dem hangel ich mich gerade Zeile für Zeile durch die Daten..... ;(

    Sub test()

    Visual Basic-Quellcode

    1. Dim t$, t2$, t3$, p1&, p2&, k1&, k2&
    2. t = ActiveCell
    3. k1 = InStr(t, "(")
    4. k2 = InStr(t, ")")
    5. p1 = InStrRev(t, "<", k1)
    6. p2 = InStr(k2, t, ">")
    7. t2 = Mid$(t, k1, k2 - k1 + 1)
    8. t2 = Replace(t2, "(", "")
    9. t2 = Replace(t2, ")", "")
    10. t2 = Replace(t2, " ", "-")
    11. t3 = Mid$(t, p1, p2 - p1 + 1)
    12. t = Replace(t, "*", t2)
    13. t = Replace(t, t3, "")
    14. ActiveCell.Offset(rowOffset:=0, columnOffset:=1) = t
    15. End Sub

    Dateien
    • Test_210706.xlsx

      (18,93 kB, 52 mal heruntergeladen, zuletzt: )
    Da in deiner Beispiel-Datei kein "*" mehr vorhanden ist, habe ich "Größe M" genommen.
    Versuch' mal:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub test2()
    3. Dim t$, t2$, t3$, p1&, p2&, k1&, k2&
    4. Dim anz&, i&
    5. 'anz = 20
    6. anz = Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile
    7. For i = 2 To anz
    8. t = Cells(i, 2)
    9. If t = "" Then
    10. Cells(i, 3) = ""
    11. ElseIf InStr(t, "Größe") = 0 Then
    12. Cells(i, 3) = ""
    13. Else
    14. k1 = InStr(t, "(")
    15. k2 = InStr(t, ")")
    16. t2 = Mid$(t, k1 + 1, k2 - k1 - 1)
    17. If Not IsNumeric(Left$(t2, 2)) Then 'wegen MK-T-633s <ul><li>100% Polyester (Chiffon) </li>
    18. k1 = InStr(k2, t, "(")
    19. k2 = InStr(k1, t, ")")
    20. t2 = Mid$(t, k1 + 1, k2 - k1 - 1)
    21. End If
    22. p1 = InStrRev(t, "<", k1)
    23. p2 = InStr(k2, t, ">")
    24. t2 = Replace(t2, " ", "-")
    25. t3 = Mid$(t, p1, p2 - p1 + 1)
    26. ' t = Replace(t, "*", t2)
    27. t = Replace(t, "Größe M", "Größe " & t2)
    28. t = Replace(t, t3, "")
    29. Cells(i, 3) = t
    30. End If
    31. Next
    32. End Sub