Anzeige
Archiv - Navigation
692to696
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
692to696
692to696
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zahlenformat

Zahlenformat
12.11.2005 12:25:26
Dieterlem
Hallo,
Ich möchte ein Zahlenformat festlegen, in dem immer auf eine Kommastelle abgerundet wird. Beispiel:
13,31 = 13,3
13,35 = 13,3
13,39 = 13,3
Mit der Formel =KÜRZEN(/0,1)*0,1 erreiche ich das. Ich möchte das jedoch direkt bei der Eingabe innerhalb der Zelle geändert bekommen. Über Zellen Formatieren / Zahlen funktioniert das nicht. Auch mit Daten / Gültigkeit habe ich keinen Erfolg gehabt.
Hat jemand eine Lösung?
Gruß
Dieterlem

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenformat
12.11.2005 13:15:21
kiwimusic
Wenn du das über VBA lösen willst, musst du die Zahl auseinandernehmen
Um den Wert während der Laufzeit eines Makros zu ermitteln machts du das so:

Sub ZahlenPfluecken
Dim a,b,c,d,e,f,i
a = ActiveCell.Value 'Zellenwert
b = CStr(a)'Wandelt Zahl in Text um
i = Len(b)'Ermittelt die Länge der des Zahlentextes
c = Left(b,i-3)'Ermittelt den Linken Teil deiner Zahl
d = Right(b,2)'Ermittelt die Dezimalstellen
d = Left(d,1)'Ermittelt die Nachkommazahl
e = c & "," & d'Setzt den Text wieder zusammen
f = CDec(e)'Stellt eine Zahl aus dem Text her
ActiveCell.Value=f ' Schreibt den Wert wieder in die Zelle
End Sub

Dass gleiche als Funktion (Kannst du dann in dein Tabellenblatt als Benutzerdefinierte Funktion einsetzen):

Function DezimalEins(a)
Dim b, c, d, e, i
b = CStr(a) 'Wandelt Zahl in Text um
i = Len(b) 'Ermittelt die Länge der des Zahlentextes
c = Left(b, i - 3) 'Ermittelt den Linken Teil deiner Zahl
d = Right(b, 2) 'Ermittelt die Dezimalstellen
d = Left(d, 1) 'Ermittelt die Nachkommazahl
e = c & "," & d 'Baut die Zahl Textuell wieder zusammen
DezimalEins = CDec(e) 'Wandelt den Text wieder in eine Zahl um
End Function

Einfach den Code in ein Modul einfügen
Hoffe hat dir gehlfen
Gruß Kiwi
Anzeige
AW: Zahlenformat
12.11.2005 16:40:56
Dieterlem
Danke an kiwimusic und franz hat mich meinem Ziel ein großes Stück weitergebracht
kiwi wie muss ich Dein Code ändern, wenn ich mit unterschiedlicher Anzahl der Kommastellen arbeiten will? Also:
13,333 = 13,3
13,3 = 13,3
13,39 = 13,3
Gruß
Dieterlem
AW: Zahlenformat
12.11.2005 18:02:30
kiwimusic
Dann muss die Funktion das Komma suchen und dir dann hinschreiben:

Function DezimalEins(a)
Dim b, c, d, e, i, j, m, n, o, p
b = CStr(a) 'Wandelt Zahl in Text um
i = Len(b) 'Ermittelt die Länge der des Zahlentextes
For j = 1 To i 'Sucht das Komma
o = Left(b, i - (j - 1))
p = Right(o, 1)
If p = "," Then 'Komma Gefunden
n = j
GoTo GEFUNDEN:
End If
Next j
GEFUNDEN:
c = Left(b, i - (j))  'Ermittelt den Linken Teil deiner Zahl
d = Right(b, n - 1) 'Ermittelt die Dezimalstellen
d = Left(d, 1) 'Ermittelt die Nachkommazahl
e = c & "," & d 'Baut die Zahl Textuell wieder zusammen
DezimalEins = CDec(e) 'Wandelt den Text wieder in eine Zahl um
End Function

Einfacher Scheint diese Sachew mit dem Rounddown von Franz zu gehen, das hat aber bei mir nicht funktioniert. Kein Ahnung warum... :-?
Anzeige
AW: Zahlenformat
12.11.2005 18:02:37
kiwimusic
Dann muss die Funktion das Komma suchen und dir dann hinschreiben:

Function DezimalEins(a)
Dim b, c, d, e, i, j, m, n, o, p
b = CStr(a) 'Wandelt Zahl in Text um
i = Len(b) 'Ermittelt die Länge der des Zahlentextes
For j = 1 To i 'Sucht das Komma
o = Left(b, i - (j - 1))
p = Right(o, 1)
If p = "," Then 'Komma Gefunden
n = j
GoTo GEFUNDEN:
End If
Next j
GEFUNDEN:
c = Left(b, i - (j))  'Ermittelt den Linken Teil deiner Zahl
d = Right(b, n - 1) 'Ermittelt die Dezimalstellen
d = Left(d, 1) 'Ermittelt die Nachkommazahl
e = c & "," & d 'Baut die Zahl Textuell wieder zusammen
DezimalEins = CDec(e) 'Wandelt den Text wieder in eine Zahl um
End Function

Einfacher Scheint diese Sachew mit dem Rounddown von Franz zu gehen, das hat aber bei mir nicht funktioniert. Kein Ahnung warum... :-?
Anzeige
AW: Zahlenformat
12.11.2005 18:02:48
kiwimusic
Dann muss die Funktion das Komma suchen und dir dann hinschreiben:

Function DezimalEins(a)
Dim b, c, d, e, i, j, m, n, o, p
b = CStr(a) 'Wandelt Zahl in Text um
i = Len(b) 'Ermittelt die Länge der des Zahlentextes
For j = 1 To i 'Sucht das Komma
o = Left(b, i - (j - 1))
p = Right(o, 1)
If p = "," Then 'Komma Gefunden
n = j
GoTo GEFUNDEN:
End If
Next j
GEFUNDEN:
c = Left(b, i - (j))  'Ermittelt den Linken Teil deiner Zahl
d = Right(b, n - 1) 'Ermittelt die Dezimalstellen
d = Left(d, 1) 'Ermittelt die Nachkommazahl
e = c & "," & d 'Baut die Zahl Textuell wieder zusammen
DezimalEins = CDec(e) 'Wandelt den Text wieder in eine Zahl um
End Function

Einfacher Scheint diese Sachew mit dem Rounddown von Franz zu gehen, das hat aber bei mir nicht funktioniert. Kein Ahnung warum... :-?
Anzeige
AW: Zahlenformat
12.11.2005 18:18:18
Dieterlem
Super vielen Dank!!!
Das habe ich gesucht
Gruß
Dieterlem
AW: Zahlenformat
12.11.2005 13:23:22
Franz
Hallo Dieter,
ich sehe da nur eine Makro-Lösung, die den Eingabebereich überwacht und die Eingabewerte nach der Eingabe neu berechnet und den gerundeten Wert in die Zelle einträgt.
Beispiel:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Zahleneingaben in Spalte B werden ab Zeile 2 auf eine Stelle nach dem Komma abgerundet
If Target.Column = 2 And Target.Row > 1 Then
Target.Value = WorksheetFunction.RoundDown(Target, 1)
End If
End Sub

Gruß
Farnz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige