Excel VBA Zelleninhalt in Zellen Aufteilen

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Versuch es mal damit:

Sub TeileText()
Dim lng_LastRow As Long
Dim I As Long
Dim J As Long
Dim str_Langtext As String
Dim str_Atext As String
Dim str_Btext As String

lng_LastRow = Range("A:A").SpecialCells _
                 (xlCellTypeLastCell).Row
For I = 1 To lng_LastRow
    str_Langtext = Cells(I, 1)
    For J = 1 To Len(str_Langtext)
        If Mid(str_Langtext, J, 1) = "=" Then
            str_Atext = Left(str_Langtext, J)
            Cells(I, 1) = str_Atext
            str_Btext = Mid(str_Langtext, J + 1, _
                              Len(str_Langtext))
            Cells(I, 2) = CDbl(str_Btext)
        End If
    Next J
Next I
End Sub

Ist zwar kein "Befehl", sondern ein VBA-Code, funzt bei mir aber.


PauleVBA  06.08.2014, 16:34

Danke für den Stern

Oder hier die elegantere Lösung:

Sub TeileText_2()
Dim lng_LastRow As Long
Dim I As Long
Dim str_Langtext As String
Dim str_Atext As String
Dim str_Btext As String

lng_LastRow = Range("A:A").SpecialCells _
                 (xlCellTypeLastCell).Row
For I = 1 To lng_LastRow
    str_Langtext = Cells(I, 1)
    If InStr(1, str_Langtext, "=", vbTextCompare) > 0 Then
        str_Atext = Left(str_Langtext, InStr(str_Langtext, "="))
        Cells(I, 1) = str_Atext
        str_Btext = Mid(str_Langtext, InStr(str_Langtext, "=") _
                      + 1, Len(str_Langtext))
        Cells(I, 2) = CDbl(str_Btext)
    End If
Next I
End Sub

Die ist zwar nicht so schnell zu durchschauen, aber eben mit einer Variablen und einer Schleife weniger. Vermutlich ist sie dadurch schneller (bei großen Datenmengen)

Ebenfalls kein "Befehl", sondern ein VBA-Code, funzt bei mir auch.

geht auch mit Formeln:

=links(A1;finden("=";A1;1))

und

=Teil(A1;finden("=";A1;1)+1;99)

Anschließend die Inhalte von A:A (oder die gesamte Spalte) nach rechts verschieben, die Ergebnisspalten nochmals kopieren und ALS WERTE an selber Stelle wieder einfügen, Quelle löschen.
Willst Du das 0,00126 als Zahl haben, dann muss noch Wert(...) drumrum, also

=Wert(Teil(A1;finden("=";A1;1)+1;99))

Iamiam  02.07.2014, 00:01

xl wandelt zwar Ziffernstrings beim Rechnen in Zahlen um, aber die Anzahl der dargestellten Dezimalstellen lässt sich zB bei Strings nicht verändern und beim Suchen mit SVerweis() oder Index(...;Vergleich(...;...;...)) muss man das Suchargument passend eingeben: als "Text" oder als Zahl.