Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: wenn 9 am anfang, komma nach zwei stellen einf. ..

wenn 9 am anfang, komma nach zwei stellen einf. ..
16.12.2004 14:31:06
Robin
Hi,
zu erst einmal muss ich mich für den eher unklaren Betreff entschuldigen, aber da ist mir beim besten willen nichts besseres eingefallen.
Nun, ich brauche dringend Hilfe, dieses Excel macht mich noch zu schaffen. ;-)
Folgendes:
Ich habe einige Zellen mit Zahlen drin, dazu bräuchte ich ein Makro, welches zu erst, die Zellen in Text umwandelt (das schaff ich ja noch mit dem Makrorecorder :) ), dann alle Punkte entfernt (Schaff ich auch mit nem Makrorecorder, einfach Suchen nach "." - Ersetzen durch "").
Nun kommen die schwierigkeiten:
Es soll gleich im anschluss geprüft werden, ob die erste Ziffer eine 1 ist, oder etwas anderes. Wenn erste Ziffer 1 dann mache nach drei stellen ein Komma, wenn nicht (also irgendetwas anderes, egal ob 4, 8, 9 oder sonstwas) dann mache nach zwei Stellen ein Komma. Dann muss noch geprüft werden ob überall nach dem komma 3 stellen sind, wenn weniger als drei nach dem komma dann mit 0en auffüllen, wenn mehr als drei, alles wegschneiden was zu viel ist.
Komme da einfach nicht weiter, wäre super nett wenn mir jemand helfen könnte.
Vielen Dank!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn 9 am anfang, komma nach zwei stellen einf. ..
Harald
Hallo Robin,
das wäre eine Teillösung:

Function Umwandeln(x As Variant) As String
Dim tmp1 As String
Dim tmp2 As String
Dim i As Integer
tmp1 = x ' umwandeln in string
tmp2 = ""
For i = 1 To Len(tmp1) ' punkte entfernen
If Left(tmp1, 1) <> "." Then
tmp2 = tmp2 & Left(tmp1, 1)
End If
tmp1 = Right(tmp1, Len(tmp1) - 1)
Next
tmp1 = tmp2 & "000" 'sicher stelllen, dass immer mindestens 3 Nullen nach dem Komma sein werden
If Left(tmp1, 1) = "1" Then ' erste Ziffer = 1 ' Prüfen der ersten Stelle auf 1
tmp2 = Left(tmp1, 3) & "," & Right(tmp1, Len(tmp1) - 3)
If Len(tmp2) > 7 Then
tmp2 = Left(tmp2, 7)
End If
Else
tmp2 = Left(tmp1, 2) & "," & Right(tmp1, Len(tmp1) - 2)
If Len(tmp2) > 6 Then
tmp2 = Left(tmp2, 6)
End If
End If
Umwandeln = tmp2
End Function

Allerdings hast Du nicht spezifiziert, was passiert, wenn das ursprüngliche Feld weniger als 2 bzw. 3 Stellen enthält. Eine "1.0" wird momentan zu "100,00".
Gruß Harald
Anzeige
AW: wenn 9 am anfang, komma nach zwei stellen einf. ..
harry
hi,
markiere mal eine zelle und probier den code. wenns nach deinen wünschen klappt, dann einfach ein eine schleife einbauen.

Sub Makro3()
Dim anFang, rEst As String
If Left(ActiveCell, 1) = "1" Then
anFang = Left(ActiveCell, 3)
rEst = Mid(ActiveCell, 4, Len(ActiveCell) - 3)
If Len(rEst) = 0 Then
rEst = "000"
ElseIf Len(rEst) > 3 Then
rEst = Left(rEst, 3)
ElseIf Len(rEst) = 1 Then
rEst = rEst & "00"
ElseIf Len(rEst) = 2 Then
rEst = rEst & "0"
End If
ActiveCell.Value = anFang & "," & rEst
Else:
anFang = Left(ActiveCell, 2)
rEst = Mid(ActiveCell, 3, Len(ActiveCell) - 2)
If Len(rEst) = 0 Then
rEst = "000"
ElseIf Len(rEst) > 3 Then
rEst = Left(rEst, 3)
ElseIf Len(rEst) = 1 Then
rEst = rEst & "00"
ElseIf Len(rEst) = 2 Then
rEst = rEst & "0"
End If
ActiveCell.Value = anFang & "," & rEst
End If
End Sub

liebe grüße,
harry
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige