Zelleninhalt aufteilen in einzelene Zellen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zelleninhalt aufteilen in einzelene Zellen
von: edie
Geschrieben am: 14.10.2003 10:07:33

Hallo zusammen,

im nachfolgenden VBA-Code wird eine 4-stellige Zahl (z. B. 12,03)
in der einzelne Zellen aufgeteilt.

Wenn ich aber eine 3-stellige Zahl eingebe (z. B. 9,99) funktioniert
das Makro nicht.

Das Makro soll unabhängig von der Zahllänge in die einzelne Zellen
aufgeteilt werden. Wichtig dabei daß in der vorletzten Zelle
das Komma und die Zahl in einer Zelle stehen (z.B. ,0).


Sub ZahlAufteilen2()
Dim z As Range
For Each z In Selection
 z.Offset(0, 3).Value = Right(z.Value, 1)
 z.Offset(0, 2).Value = Mid(z.Value, 3, 2)
 z.Offset(0, 1).Value = Mid(z.Value, 2, 1)
 z.Value = Mid(z.Value, 1, 1)
Next z
End Sub


Kann mir jemand helfen?

Vielen Dank im Voraus

Grüße
Bild


Betrifft: AW: Zelleninhalt aufteilen in einzelene Zellen
von: IngoG
Geschrieben am: 14.10.2003 10:53:19

Hallo edie,
versuchs mal mit mathe-functionen:

For Each z In Selection
z.Offset(0, 1).Value = int(z.Value-int(z.value/10)*10)
z.Offset(0, 2).Value = "," & int((z.value-int(z.value))*10)
z.Offset(0, 3).Value = int((z.value*10-int(z.value*10))*10)
z.Value = int(z.Value/10)
Next z
End Sub


es sollte funktionieren, wenn Du in der selection nur zahlen hast.
Du kannst es ja ausprobieren und dich nochmal melden

Gruß Ingo


Bild


Betrifft: AW: Vielen Dank es funktioniert
von: edie
Geschrieben am: 14.10.2003 11:09:45

Vielen Dank es funktioniert.

Grüße


Bild


Betrifft: AW: Zelleninhalt aufteilen in einzelene Zellen
von: RAnton
Geschrieben am: 14.10.2003 11:10:18

Hallo edie

hier der modifizierte Code



Sub ZahlAufteilen2()
Dim z As Range
Dim i As Integer
For Each z In Selection
 i = InStr(1, z.Value, ",")
 On Error Resume Next
 z.Offset(, 1).Resize(1, 4).Value = ""
 z.Offset(0, 4).Value = Mid(z.Value, i + 2, 1)
 z.Offset(0, 3).Value = Mid(z.Value, i, 2)
 z.Offset(0, 2).Value = Mid(z.Value, i - 1, 1)
 z.Offset(0, 1).Value = Mid(z.Value, i - 2, 1)
 
Next z
End Sub


Achte bitte drauf, daß ich deinen Offset um 1 nach rechts geschoben habe, damit ich das Ergebnis kontrollieren kann.

Gruß
RAnton


Bild


Betrifft: AW: Zelleninhalt aufteilen in einzelene Zellen
von: Dan
Geschrieben am: 14.10.2003 11:43:05

Hallo Edie
versuch es mit diesem code. Ich weiss nicht genau ob es so richtig ist, also testen :-).
Aber im excel gibt es auch eine moglichkeit : wahle Daten/Text in die Spalten aus ... es ist mogliche weise das was du brauchst :-).
Gruss dich, Dan.

Public

Sub WertInEinzelneZellenAufteilen()
    Dim Wert$, WertLen%, CharNr%, Char$, NeueSp%, Zelle As Range, Zellen As Range
    
    ' testen ob zellen ausgewahlt sind
    If (TypeName(Application.Selection) <> "Range") Then
        MsgBox "Keine Zellen ausgewahlt.": End
    Else
        ' referenz an die ausgawahlte selection setzen
        Set Zellen = Application.Selection
    End If
    
    ' alle zellen durchgehen und Wert$ In Einzelne Zellen Aufteilen
    For Each Zelle In Zellen
        Wert$ = CStr(Zelle.Value)
        WertLen% = Len(Wert$)
        
        ' wenn ein Komma da ist, brauchen wir eine zelle weniger
        If (InStr(1, Wert$, ",")) Then
            ' in diese spalte wird der neue character eingefugt
            NeueSp% = Zelle.Column + WertLen% - 2
        Else
            NeueSp% = Zelle.Column + WertLen% - 1
        End If
        
        ' fur jeden character in Wert$, beginnend mit dem letzten
        For CharNr% = -WertLen% To -1
            Char$ = Mid(Wert$, -CharNr%, 1)
            ' testen, ob es sich um Komma handelt oder nicht
            If (Char$ <> ",") Then
                Cells(Zelle.Row, NeueSp%).Value = Char$
                NeueSp% = NeueSp% - 1
            Else
                Cells(Zelle.Row, NeueSp% + 1).Value = Char$ & Cells(Zelle.Row, NeueSp% + 1).Value
            End If
        Next CharNr%
    Next Zelle
    
End Sub



 Bild

Beiträge aus den Excel-Beispielen zum Thema " Zelleninhalt aufteilen in einzelene Zellen"