Formatieren Sie eine Zahl mit optionalen Dezimalstellen in Excel

76

Ich habe Zahlen in Zellen in Excel. Ich möchte, dass die Zahlen so formatiert werden, dass sie, wenn sie Dezimalstellen haben, maximal zwei und, wenn sie keine Dezimalstellen haben, keine anzeigen.

Zum Beispiel.

  • 15 sollte als 15 formatiert sein, NICHT als 15.00
  • 14.3453453 sollte als 14.35 formatiert sein
  • 12.1 sollte als 12.1 formatiert sein
  • 0 sollte als 0 formatiert werden

Der nächste benutzerdefinierte Formatcode, den ich mir ausgedacht habe, ist 0.##. Leider formatiert sich diese 15.00als 15. (bitte extra Komma beachten).

Um das Problem weiter zu erschweren, ist die Tabelle das Ergebnis eines Exports aus SQL Server Reporting Services. Es sind also keine Makros möglich. Na 0.##ja , es sieht so aus, als wäre es meine beste Wette, und sie können einfach mit der Verlängerung leben.

Strahl
quelle

Antworten:

29

Alternativ können Sie das "optionale" Dezimalpunktproblem mit der folgenden Lösung lösen:

Zahlenformat: General;[Red](General)

Dadurch werden die Dezimalstelle und der Nachkommastellenwert entsprechend addiert, während negative Zahlen besser lesbar formatiert werden.

Was die ursprüngliche Frage des Posters betrifft, müssen Sie die "zusätzlichen" Dezimalstellen mithilfe einer Formel runden / abschneiden. Dies ist jedoch eine einfache Formel =ROUND(<value>,<desired decimal places>), die nicht extrem rechenintensiv ist.

Beispiele:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
Ross
quelle
3
Diese Antwort verdient mehr Gegenstimmen. Der Dezimalpunkt wurde korrekt behandelt, ohne dass eine bedingte Formatierung verwendet wurde. In meinem speziellen Fall möchte ich alle Dezimalstellen anzeigen, sodass ich die Formel nicht einmal ändern muss.
Wilson
1
Generalhat das Problem in die wissenschaftliche Notation zu gehen, wenn die Zahl zu viele Dezimalstellen hat, zB 2.6532E-06statt 0.0000026532.
Dan Dascalescu
+1 Dies war hilfreich für mich, um ein bestimmtes Problem zu lösen, bei dem Werte von Tausenden von Dollar (z. B. 40.000 USD als 40.000 USD und 10.500 USD als 10,5.000 USD) in den Beschriftungen einer Pivot-Tabelle angezeigt werden müssen (bei denen die bedingte Formatierung keine ist) Möglichkeit). Format Code $General\khat es perfekt gemacht!
Dan Henderson
17

Wenden Sie die bedingte Formatierung für Nicht-Dezimalzahlen an.

Beispielsweise ist A1 die Zielzelle.

  1. Formatieren Sie A1 als "###, ###. 00". Dies wird als Dezimalzahl verwendet.
  2. Definieren Sie die bedingte Formatierung für Nicht-Dezimalzahlen.

    • Bedingung: Zellenwert gleich = TRUNC (A1).
    • Format: ###,###

Unten ist das Ergebnis:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
slhck
quelle
Hatte gerade ein Problem mit der Nummer 4.001, das auf 4,00 gerundet angezeigt wurde, die bedingte Formatierungsformel (4.001 <> 4) jedoch nicht erfüllte und weiterhin als "4" angezeigt wurde. Ich habe diese bedingte Formel verwendet, um sie zu lösen: = RUND ($ A1; 2) = TRUNC ($ A1)
leokhorn
14

Benutzerdefinierte Excel-Formate können eine teilweise Antwort liefern

Benutzerdefinierte Formate für Zahlen in Excel werden in folgendem Format eingegeben:

  • positives Zahlenformat; negatives Zahlenformat; Null-Format; Textformat

Ein Format, das Ihren Anforderungen nahe kommt, bei Zahlen ohne Dezimalstellen jedoch die Dezimalstelle einhält, ist:

  • (#, ##. ??); 0

Beispiel:

  • 15 wird als 15 angezeigt.
  • 14.3453453 wird als 14.35 angezeigt
  • 12.1 wird als 12.1 angezeigt
  • 0 wird als 0 angezeigt
Robert Mearns
quelle
Dies ist mit Abstand die beste Antwort.
KyloRen
4
Bietet jedoch keine gültige Lösung oder gar keine mögliche Lösung. Es enthält nützliche Informationen zu benutzerdefinierten Zahlenformaten.
Einseitige
15 wird angezeigt als, 15.
Roger Far
6

Ich bin kürzlich in Excel 2007 darauf gestoßen und habe gerade die 'TRUNC'-Funktion in den Wertezellen verwendet:

  value  =TRUNC(B5,1)
      0      0
      5      5
    5.4    5.4
  65.43   65.4
765.432  765.4

Arbeitete genau so, wie ich es wollte ...

Droj
quelle
3
Ja, sowohl TRUNC (x, 2) als auch ROUND (x, 2) erledigen die Aufgabe (abhängig von der gewünschten Rundungsmethode). Sie müssen dann nur noch die Zellenformatierung auf "Allgemein" setzen und die Nachkommastellen werden nur bei Bedarf angezeigt. (Ich stimme dafür, Drojs Post als Antwort zu markieren.)
Simon East
5

Hier ist eine Methode mit bedingter Formatierung.

  1. Klicken Sie mit der rechten Maustaste auf Ihre Zelle und wählen Sie "Zelle formatieren".
  2. Wählen Sie "Benutzerdefiniert"
  3. Geben Sie "0. ####" ein (fügen Sie mehr oder weniger # hinzu, um die maximale Anzahl von Dezimalstellen zu steuern).
  4. OK klicken
  5. Verwenden Sie bei weiterhin ausgewählter Zelle die Option "Bedingte Formatierung" (je nach Excel-Version kann es sich um ein Menüelement im Format oder eine Schaltfläche in der Startansicht handeln).
  6. Hinzufügen einer neuen Regel basierend auf der Formel "= MOD (H32,1) = 0"

    edit - bessere Formel ist "= MOD (ROUND (H32,2), 1) = 0", wobei die '2' die gewünschte Anzahl von Dezimalstellen ist. Die vorherige Formel hinterlässt einen Dezimalpunkt, wenn die Zahl auf eine Ganzzahl gerundet wird.

    Ersetzen Sie H32 in der Formel durch die ID Ihrer Zelle, aber vergewissern Sie sich, dass keine $ -Zeichen vorhanden sind! (Kein $ -Zeichen stellt sicher, dass Sie das Format in andere Zellen kopieren können.)

  7. Wählen Sie für das Format dieser Regel die Registerkarte "Nummer" und wählen Sie "Benutzerdefiniert".

  8. Geben Sie diesmal die Formel "0" ein
  9. Klicken Sie so oft auf OK, um zum Arbeitsblatt zurückzukehren (je nach Excel-Version unterschiedlich).

Los geht's, viel Spaß mit Verantwortung! Wenn Sie das Format in andere Zellen kopieren möchten, denken Sie daran, dass Sie die Zelle kopieren und "Inhalte einfügen" mit der Option "Formatieren" verwenden können.

John
quelle
Können Sie klarstellen, ob dies nur für bestimmte (oder neuere) Versionen von Excel gilt? Ich verwende immer noch 2003 (und ich vermute, dass es auch eine peinliche Anzahl von anderen gibt) und wenn ich zur bedingten Formatierung gehe, habe ich keine Option, die Zahlenformatierung zu ändern, nur Schriftart, Rand und Muster. Danke
SSilk
Ich habe diesen Ansatz gerade in Excel 2010 ausprobiert und er hat gut funktioniert. Es funktioniert nicht mit früheren Versionen von Excel (zumindest sagt mir dies mein "Kompatibilitätsmodus" -Prüfer in Excel 2010).
Barfuin
2

Beachten Sie, dass Sie in Reporting Services auch einen Ausdruck für die Zahlenformatierung schreiben können. In meiner Situation habe ich verwendet

iif(floor(Fields!numericFieldName.Value)=Fields!numericFieldName.Value,"0","0.##")

als Zahlenformatausdruck. Dies erzeugte eine Excel-Datei mit zwei Zellenformaten, die ausgewählt wurden, ob der Wert eine Ganzzahl war oder nicht.

Joshua Seigler
quelle
1

Geben Sie / Ihre Benutzer Werte direkt in die Zellen ein oder werden sie mit einer Formel oder einem Makro gefüllt?

Wenn die Zellen direkt von einem Menschen nicht aufgefüllt werden, Sie können die berechneten Werte in einem versteckten Bereich speichern und dann formatierte Text mit einer Formel wie diese den Benutzer angezeigt werden :

=IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.0#"))

(wobei 'A1' die Zelle ist, auf die verwiesen wird)

Die Formel zeigt folgende Werte an:

 -------------------------
 |Original     |Formatted|
 |-------------+---------|
 |         15  |       15|
 | 14.3453453  |    14.35|
 |       12.1  |     12.1|
 |          0  |        0|
 |    -15.123  |   -15.12|
 |      1.004  |        1|
 -------------------------

Hinweis: Die Formelausgabe ist eine Textzeichenfolge, keine numerische Zeichenfolge.

  • Die Ausgabe erfolgt standardmäßig linksbündig.
  • Sie können die Ausgabe nicht für weitere Berechnungen verwenden (stattdessen sollten Sie die ursprüngliche Zelle verwenden, auf die verwiesen wird).

quelle
1

Formatieren Sie die Zelle als 'Allgemein' und beschränken Sie die Werte bei der Datenüberprüfung auf Dezimalstellen


quelle
Wenn Sie vermeiden müssen, Formeln (und wahrscheinlich eine neue Spalte) zu Ihrer Tabelle hinzuzufügen, ist der Vorschlag von Fred möglicherweise der beste.
Simon East
1
Auf diese Weise können Personen keine Zahlen eingeben, die die visuelle Grenze der Dezimalstellen überschreiten.
Barfuin
1

Dies muss nicht ganz so kompliziert sein - es kann ausschließlich mit Bedingter Formatierung erfolgen. Ich habe Excel 2010, daher funktioniert dies möglicherweise nicht für frühere Versionen.

  1. Formatieren Sie die Zellen so, dass sie "Allgemein" sind. Die Anzahl der Dezimalstellen für einige Zahlen kann sehr hoch sein.
  2. Markieren Sie eine Zelle und klicken Sie auf Bedingte Formatierung. Klicken Sie auf Neue Regel und dann auf "Formel verwenden".
  3. Verwenden Sie die Formel = (B1-INT (B1))> 0 (wobei B1 die zu formatierende Zelle ist)
  4. Klicken Sie auf die Schaltfläche Format und wählen Sie Benutzerdefiniert. Geben Sie [= 0] 0;. ## in das Feld Typ ein.
  5. Drücken Sie mehrmals die Eingabetaste.
  6. Klicken Sie erneut auf Bedingte Formatierung, klicken Sie auf Regeln verwalten und bearbeiten Sie die soeben erstellte Regel. Ändern Sie den Bereich im Feld "Gilt für", um den Bereich abzudecken, den Sie abdecken möchten.

Alles erledigt.

Wayne Hoff
quelle
1

Meine Antwort entfernt den Dezimalpunkt UND entfernt den Wert 0

in bedingter Formatierung schreiben:

General;#;;@

Dies sollte den Trick machen.

Mr.J
quelle
Dies zeigt Nullen als leere Zellen an.
Lolmaus - Andrey Mikhaylov
0

Zusätzlich zu Lukes großartiger Antwort hier oben gibt es eine Variation, die auf seiner Arbeit basiert. Ich wollte keine Null in der Zelle haben, wenn es keinen Wert gab. Belassen Sie Ihr Zellenformat als allgemein und verwenden Sie diese Formel:

=IF((A1=""), "",IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.0#")))

Auch hier ist A1 die Zelle, auf die verwiesen wird.


quelle
0

Verwendung der RoundFunktion zur Bereitstellung aussagekräftiger Zahlen. Die Anzahl der angezeigten Nachkommastellen ändert sich dadurch jedoch nicht. Formatieren Sie die Zelle jedoch einfach mit dem generalZahlenformat.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
Siva Charan
quelle
Warum all die komplizierten INT (LOG ... Formel? Warum nicht nur RUNDE (Wert, 2) und Format als General?
Simon East
0
B1=IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.##"))
C1=IF(ROUND(B1,2)=INT(B1),TEXT(B1,"0"),TEXT(B1,"0.##"))

Keine Nachkommastellen mehr.

user228931
quelle
0

Dies scheint die einfachste Möglichkeit zu sein, eine Dezimalstelle anzuzeigen, wenn Bruchteile vorhanden sind. Bei ganzen Zahlen wird keine Dezimalstelle angezeigt:

=TEXT(ROUND(Base_Number,Max_Decimal_Places),"general")

oder mit Zellreferenzen:

=TEXT(ROUND(A1,2),"general")

Gibt

15 = 15
9,23432234 = 9,23

auf der Suche nach dem gleichen
quelle
Willkommen bei SuperUser @lookingforsame. Nur eine Notiz, um auf die versteckten Details der Fragen zu achten. In diesem Fall besagt der Befehl, dass die Ausgabe von SQL stammt. Wenn keine Makros möglich sind, sind dies möglicherweise auch keine Formeln. Manchmal lohnt es sich, vor der Beantwortung eine Frage als Kommentar einzutragen. Schön, eine neue Person zu sehen, viel Spaß beim Antworten!
Julian Knight