Herbers Excel-Forum - das Archiv
Zelleninhalt aufteilen in einzelene Zellen
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
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
Betrifft: AW: Vielen Dank es funktioniert
von: edie
Geschrieben am: 14.10.2003 11:09:45
Vielen Dank es funktioniert.
Grüße
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
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

|