Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel VBA: String von rechts (hinten) abschneiden
#1
Hallo zusammen,
dürfte ich mal wieder Eure werte Hilfe in Anspruch nehmen?

Sicher für Euch ein einfaches Thema.

Ich möchte bei einem String alles von rechts bis einschließlich des zweiten Leerzeichens abschneiden und mit dem linken Teil dann weiterarbeiten.
die Strings können z.B. wie folgt aufgebaut sein:

BBBBBBAAAAAXXXXX BA 2 (MS) 739,2 kWp      ...... Ergebnis so: BBBBBBAAAAAXXXXX BA 2 (MS)

AAAXXXXCCCCZZZ LLLLLNNN 3 (MS)- WR 27-39 1,06 MWp      ...... Ergebnis so: AAAXXXXCCCCZZZ LLLLLNNN 3 (MS)- WR 27-39

LLLLLNNNNN PVA 1 143,22 kWp  ...... Ergebnis so: LLLLLNNNNN PVA 1

Ich habe da schon etwas probiert das mir aber sehr umständlich erscheint.

Code:
            Z = InStrRev(.Range("C" & sCell.Row - 2), " ")
            If Z > 0 Then
              Test1 = Trim(Mid(.Range("C" & sCell.Row - 2), Z + 0))
              Test1 = Trim(Left(.Range("C" & sCell.Row - 2), Z - 1))
              .Range("C" & sCell.Row - 2) = Test1
             
              Z = InStrRev(.Range("C" & sCell.Row - 2), " ")
              Test1 = Trim(Mid(.Range("C" & sCell.Row - 2), Z + 0))
              Test1 = Trim(Left(.Range("C" & sCell.Row - 2), Z + 4))
              .Range("C" & sCell.Row - 2) = Test1
            End If

Ginge das auch einfacher bzw. in einem Rutsch, dass ab dem vorletzten Leerzeichen im String alles in die Tonne soll und nur der Rest übrig bleibt?

Vielleicht kann mir jemand einen Tipp geben?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
Hallo,

unter "schöne" Programmierung fällt das nicht:

Code:
Sub F_en()
Cells(1, 1) = "A 1 2 3 4 5"

dim Tx
Tx = split(cells(1, 1))
ReDim preserve Tx(ubound(Tx)-2)
debug.print join(Tx)
end sub

mfg

(getestet, aber abgetippt)
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • sharky51
Antworten Top
#3
Hallo Fennek,
vielen Dank für Dein Beispiel!

Mit Deinem Zahlenbeispiel funktioniert das bestens.

Leider aber nicht mit meinen o.g. Beispielen.

Wenn ich z.B. diesen String "BEESENLAUBLINGEN BA 1-1 (MS) 478,8 kWp" einsetze, dann kommt folgendes zurück:
BEESENLAUBLINGEN BA 1-1" es fehlt aber hier dieser Teil "(MS)".

Ich würde also dieses Ergebnis erwarten: "BEESENLAUBLINGEN BA 1-1 (MS)"

Woran kann dies jetzt noch liegen?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#4
das Zeichen nach "(MS)" ist das geschützte Leerzeichen 160.

Zitat:BBBBBBAAAAAXXXXX BA 2 (MS) 739,2 kWp
Antworten Top
#5
Hallo,

weitere Variante mit Bereinigung des Zeichens 160:
Sub aaa()
Dim strQ As String, strS As String, strZ As String

strS = Chr(32)
strQ = Replace(ActiveCell.Value, Chr(160), strS)
strZ = Left(strQ, InStrRev(Left(strQ, InStrRev(strQ, strS) - 1), strS) - 1)
Debug.Print strZ
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sharky51
Antworten Top
#6
Guten Morgen Uwe,

das passt jetzt prima!

Super und vielen Dank für Deine Mühe.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste