Herbers Excel-Forum - das Archiv

Zelleninhalt aufteilen in einzelene Zellen

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
Excel-Beispiele zum Thema " Zelleninhalt aufteilen in einzelene Zellen"
Zeichenfolge aufteilen In eine InputBox eingegebene Daten in Elemente aufteilen
Text aus Textbox in Zellen aufteilen Telefonnummern nach Vorwahl und Anschluß aufteilen
Hyperlink aufteilen Zeichenfolge in Ziffern und Buchstaben aufteilen
Zelleingaben in Gruppen von 5 Zeichen aufteilen Aufteilen der Arbeitsblätter in neue Arbeitsmappen
Aufteilen einer Tabelle auf mehrere Arbeitsblätter Makros in Abhängigkeit vom Zellennamen aufrufen