Benutzerdefiniertes Zahlenformat

Bild

Betrifft: Benutzerdefiniertes Zahlenformat
von: W. Winter
Geschrieben am: 25.04.2015 18:04:32

Hallo an alle hier im Forum,
ist es möglich über das benutzerdefinierte Zahlenformat eine Ganze Zahl mit einem Strich (Bindestrich) darzustellen?
Zum besseren Verständnis:
21 oder 21,00 soll als 21,- dargestellt werden
21,5 oder 21,50 soll als 21,50 dargestellt werden
Allerdings soll Excel mit der als 21,- dargestellten Zahl noch weiterrechnen können.
Ist das über "Zahlenformat" realisierbar oder muss ich den Umweg über VBA nehmen?
Grüße und schönes WE

Bild

Betrifft: Nachfragen, Musterdatei bitte
von: Matze Matthias
Geschrieben am: 25.04.2015 19:34:44
Hallo W.Winter,
ich hab leider keine Lösung aber ich verstehe auch dein Anliegen nicht wirklich.
Die 21 oder auch 21,00 sind doch schon unterschiedlich im Format, sind das manuelle Eingaben oder mit einer Formel berechnete Ergebnisse. Dann sollte doch dieses Ergebnis dem entsprechend in das Format gebracht werden , oder?
Des weiteren wie willst du nachher mit dem Nachkommastellen weiter machen wenn 21,50 rauskommt ist das machbar aber bei 21,- ??
Hast du mal eine Musterdatei wo deine vorhandenen Formatierung gemacht sind? Wie der Aufbau aussieht und mit einer kleinen Beispiel wie es nachher aussehen soll.
Bin mir gar nicht sicher ob dies überhaupt umsetzbar ist. Womöglich nur mit VBA.
Gruß Matze

Bild

Betrifft: AW: Nachfragen, Musterdatei bitte
von: W. Winter
Geschrieben am: 25.04.2015 21:10:23
Hallo Matze,
Musterdatei ist eigentlich überflüssig.
Nochmal klarer ausgedrückt:
Die Eingabe von 21 soll als 21,- dargestellt werden.
Das geht mit dem benutzerdefinierten Zahlenformat "0,-" (ohne Anführungszeichen). Wenn ich in die so formatierte Zelle 20,5 eingebe rundet Excel das auf, und es erscheint ebenfalls 21,-. Ich möchte das die Nachkommastellen ,00 mit Strich erscheinen (21,00 = 21,-)und dann wenn die Nachkommastellen grösser Null sind zweistellig erscheinen (21,5 = 21,50 oder 21,55 = 21,55)
Hoffe das ich mich jetzt verständlicher ausgedrückt habe.
Grüße
WW

Bild

Betrifft: bitte Prof i ansehen, danke
von: Matze Matthias
Geschrieben am: 25.04.2015 23:26:49
Hallo W. Winter,
ich hab weiterhin keine Lösung bin aber auf eine gespannt wenn es diese dann gibt, habe den Beitrag auf offen gestellt damit einer der Fachleute sich der Sache annehmen.
Gruß Matze

Bild

Betrifft: bei diesen Hinweisen kriegt meine...
von: Oberschlumpf
Geschrieben am: 26.04.2015 00:10:05
...Glatze Haare, damit die sich sträuben können
Hi W
Zitatauszug:
"...Musterdatei ist eigentlich überflüssig..."
Wenn du mit vorhandener Datei es nicht hinbekommst, eine Lösung zu erarbeiten, wie kannst du dann von uns erwarten, dass wir es ohne Datei schaffen sollen???
Dass du es mit Datei nicht schaffst, ist nicht schlimm!
Dafür gibt es Foren wie dieses hier, wo man nachfragen kann, wenn man nicht weiterkommt.
Aber so etwas zu behaupten, wie oben zu lesen, ärgert mich.
Sorry, aber nun behaupte ich mal genau so frech, dass DU einfach nur zu faul bist, uns per Upload eine Bsp-Datei zur Verfügung zu stellen.
Ciao
Thorsten

Bild

Betrifft: mE nur über dem VBA-Umweg ...
von: Matthias L
Geschrieben am: 26.04.2015 02:40:56
Hallo
Das geht mE nur über dem VBA-Umweg (ich kann mich aber auch irren)
Probiers doch einfach so:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count = 1 And IsNumeric(Target) Then
  Select Case Target / Int(Target)
   Case Is = 1
    Target.NumberFormat = "0.-"
   Case Is <> 1
    Target.NumberFormat = "0.00"
  End Select
 End If
End Sub
Gruß Matthias

Bild

Betrifft: Das ist bei dieser Xl-Version richtig, ...
von: Luc:-?
Geschrieben am: 26.04.2015 04:55:14
…Matti;
warum die anderen Herren dafür extra die Datei benötigen, ist mir schleierhaft. Die Aufgabe ist doch eindeutig und erst ab Xl12/2007 mit einer Kombi von bedingtem und benutzer­definiertem Zahlen­format lösbar: =REST(A1;1)=0 → 0,–? (Strich ist länger, damit die Kommata unter­ein­ander stehen!)
WW wird aber deine VBA-Lösung benötigen, ggf mit dem von mir vorgeschlagenen Format-String.
Gruß + schöSo, Luc :-?

Bild

Betrifft: Vielen Dank, Luc! WP/StB sind entzückt ...
von: lupo1
Geschrieben am: 26.04.2015 08:34:10
Auf die Verwendbarkeit des bedingten Zahlenformats bin ich für den Bilanz/GuV/ET-Bericht noch gar nicht gekommen:
https://www.herber.de/bbs/user/97304.xlsx
Anmerkung 1: Manche möchten dann auch noch das Minuszeichen-leading-ausgerichtet haben ... das geht - glaube ich - auch noch.
Anmerkung 2: "Genauigkeit wie angezeigt" erspart im Bilanzkontext viele dämliche Rundungsformeln.

Bild

Betrifft: wirklich entzückt ...
von: lupo1
Geschrieben am: 26.04.2015 08:53:45
noch nachgeschoben:
Bei 1,01 möchte man 1,01
Bei 1,10 möchte man 1,10
Bei 1,00 möchte man 1,--
Bei 0,01 möchte man 0,01
Bei 0,00 möchte man -,--
Bei bleibt es leer! Damit kann man in einer Liste auch eben Zwischenüberschriften ohne Wert vorsehen, ohne das Format in der Werte-Spalte unterbrechen zu müssen!
Alles das kann die Lösung von Luc, erweitert auf das für =REST(A1;1)=0 bedingte Zahlenformat #.##0,––;-#.##0,––;–,––

Bild

Betrifft: Ja, man könnte ja auch das Buchungsformat ...
von: Luc:-?
Geschrieben am: 26.04.2015 15:04:32
…etwas modifizieren, Lupo,
und für spezielle Zwecke mag auch Genauigkeit wie angezeigt günstig sein, nur nicht immer, denn Basis- von Berechnungs­daten sollten immer wenigstens eine Dezimale mehr haben als für das Berechnungs­ergebnis vorgesehen ist.
Freut mich, dass das, was ich nur der Vollständig­keit halber erwähnt hatte, nun auch noch ander­weitig nutzt. Bei einem alten Xl11-Projekt musste ich Ähnliches noch in der Art von Matti machen… ;-)
Gruß + schöRestSo, Luc :-?

Bild

Betrifft: Genauigkeit wie angezeigt
von: lupo1
Geschrieben am: 26.04.2015 16:28:03
Der Sinn von "Genauigkeit wie angezeigt" ist vor allem, dass man simples Addieren und Subtrahieren von Geldbeträgen, wie es bei Buchhaltung und Steuerberatung üblich ist, gnadenlos ohne Sicherheitsvorrichtungen wie RUNDEN durchziehen kann (Kontrollen verwendet man dort sowieso, also Vergleich von Horizontal- und Vertikalsummen).
Um es anders zu benennen: "Genauigkeit wie angezeigt" ist eine globale Einstellungsmöglichkeit, um sich vom Double-Gleitkommatyp (8 Byte) virtuell zu entfernen (in Excel dargestellt als das noch einmal größere Variant mit 16 Byte).
Gefährlich ist höchstens die Verwendung einer Tabelle in einem anderen Kalkulationsprogramm, welches diese Funktion nicht kennt. Und zwar deshalb gefährlich, weil man das ganze Modell anpassen müsste.
Benötigt man zwischendurch dann doch mal eine %-, Zins-, Steuer- oder sonstige Faktoren-Berechnung, kann man deren Genauigkeit in der Berechnung selbst gestalten, um dann bei der Ausgabe wieder einen gerundeten Betrag zu erhalten. Wer ein wenig geübt ist, kann solche Berechnungen dann skaliert mit eigener Genauigkeit durchführen oder eben eine andere Format-Anzeige nutzen. Zumindest einmal spart man auch hier RUNDEN.
Den für die korrekte Ausgabe von Proportionalschriften benötigten längeren Strich erhält man übrigens über ZEICHEN(150) statt normal ZEICHEN(45). Wie aus meiner Datei (erstes Posting) ersichtlich, verschmilzt er leider unschön (zumindest in manchen Prop.-Schriften) mit seinem Nachbarn, wenn es sich nicht gerade um eine fixbreite Schrift wie Courier New handelt.
Nachlieferung:
_-* #.##0,00;-* #.##0,00 ist das normale Zellformat mit "zellfront-bündigem" Minuszeichen
_-* #.##0,––;-* #.##0,––;–,–– ist das zugehörige bedingte Format zu =REST(A1;1)=0

Bild

Betrifft: und noch ne Korrektur
von: Matthias L
Geschrieben am: 26.04.2015 08:56:57
Hi Luc
Ja, diesen Format-String kenne ich auch und benutze ihn sogar beim Summieren von Produktionsmengen.
Ist halt optisch dadurch "aufgehübscht" ;-)
Allerdings hatt ich vergessen eine Fehlerbehandlung einzupflegen.
Die muss zwingend mit rein.
Sei es On Error Resume Next oder On Error Goto → Sprungmarke
Denn beim Verschieben von Zellen kommt es sonst zum Crash
Also mit Deinem zusätzl. Vorschlag dann so:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
 If Target.Count = 1 And IsNumeric(Target) Then
  Select Case Target / Int(Target)
   Case Is = 1
    Target.NumberFormat = "0.-?"
   Case Is <> 1
    Target.NumberFormat = "0.00"
  End Select
 End If
End Sub
schö. Rest-WE
Gruß Matthias

Bild

Betrifft: Na, dann wieder abwarten! Dito! ;-) Gruß owT
von: Luc:-?
Geschrieben am: 26.04.2015 14:54:54
:-?

Bild

Betrifft: Grüße von St.Nimmerlein...! :-| owT
von: Luc:-?
Geschrieben am: 01.05.2015 13:57:51
:-?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Benutzerdefiniertes Zahlenformat"