Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelleninhalt aufteilen in einzelene Zellen

Zelleninhalt aufteilen in einzelene Zellen
14.10.2003 10:07:33
edie
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt aufteilen in einzelene Zellen
14.10.2003 10:53:19
IngoG
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
AW: Vielen Dank es funktioniert
14.10.2003 11:09:45
edie
Vielen Dank es funktioniert.

Grüße
AW: Zelleninhalt aufteilen in einzelene Zellen
14.10.2003 11:10:18
RAnton
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
Anzeige
AW: Zelleninhalt aufteilen in einzelene Zellen
14.10.2003 11:43:05
Dan
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

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige