Formater un nombre avec des décimales facultatives dans Excel

76

J'ai des nombres dans les cellules dans Excel. Je souhaite que les nombres soient mis en forme de sorte que, s'ils ont des décimales, ils apparaissent jusqu'à deux au maximum, et s'ils n'ont pas de décimales, ils ne les affichent pas.

Par exemple.

  • 15 devrait être formaté comme 15, pas 15,00
  • 14.3453453 devrait être au format 14.35
  • 12.1 devrait être au format 12.1
  • 0 devrait être formaté comme 0

Le code de format personnalisé le plus proche que j'ai créé est 0.##. Malheureusement, ce format 15.00est 15. (notez le point décimal supplémentaire).

Pour compliquer davantage le problème, la feuille de calcul est le résultat d'une exportation à partir de SQL Server Reporting Services. Donc, aucune macro n'est possible. Oh bien, cela semble être 0.##mon meilleur pari, et ils peuvent simplement vivre avec la période supplémentaire.

Rayon
la source

Réponses:

29

Vous pouvez également résoudre le problème de point décimal "facultatif" à l'aide de la solution suivante:

Format de nombre: General;[Red](General)

Cela ajoutera la décimale et la valeur décimale en conséquence, tout en formatant les nombres négatifs de manière plus lisible.

En ce qui concerne la question initiale de l'affiche, vous devez encore arrondir / tronquer les "décimales" supplémentaires à l'aide d'une formule. Cependant, il s’agit d’une formule simple =ROUND(<value>,<desired decimal places>)qui ne coûte pas très cher en calcul.

Exemples:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
Ross
la source
3
Cette réponse mérite plus de votes positifs. Il a géré le point décimal correctement sans utiliser de mise en forme conditionnelle. Dans mon cas particulier, je souhaite afficher toutes les décimales, je n'ai donc même pas besoin de modifier la formule.
Wilson
1
Generalpose le problème de la notation scientifique si le nombre comporte trop de décimales, par exemple 2.6532E-06au lieu de 0.0000026532.
Dan Dascalescu
+1 Cela m'a été utile pour résoudre un problème spécifique d'afficher des valeurs de milliers de dollars (par exemple, afficher 40 000 $ en 40 000 $ et 10 500 $ en 10,5 000 $), dans les étiquettes d'un tableau croisé dynamique (où la mise en forme conditionnelle n'est pas une option). Le code de format l'a $General\kfait parfaitement!
Dan Henderson
17

Appliquer la mise en forme conditionnelle pour les nombres non décimaux.

Par exemple, A1 est la cellule cible.

  1. Format A1 comme "###, ###. 00". Ceci sera utilisé pour le nombre décimal.
  2. Définissez la mise en forme conditionnelle pour les nombres non décimaux.

    • Condition: valeur de cellule égale à = TRUNC (A1).
    • Format: ###,###

Voici le résultat:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
slhck
la source
Je viens d'avoir un problème avec le numéro 4.001, qui a été arrondi à 4,00, mais qui ne satisferait pas la formule de mise en forme conditionnelle (4.001 <> 4) et s'afficherait toujours sous la forme "4.". J'ai utilisé cette formule conditionnelle pour le résoudre: = ARRONDI (A1 $; 2) = TRUNC ($ A1)
leokhorn
14

Les formats personnalisés Excel peuvent fournir une réponse partielle

Les formats personnalisés pour les nombres dans Excel sont entrés dans ce format:

  • format de nombre positif, format de nombre négatif, format zéro, format de texte

Un format qui se rapproche de vos besoins, mais laisse dans la décimale pour les nombres sans décimales est:

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

Exemple:

  • 15 est affiché comme 15.
  • 14.3453453 est affiché comme 14.35
  • 12.1 est affiché comme 12.1
  • 0 est affiché comme 0
Robert Mearns
la source
C'est de loin la meilleure réponse.
KyloRen
4
Pourtant, ne fournit pas réellement une solution valable, ni même une solution possible. Il contient des informations utiles concernant les formats de nombres personnalisés.
Lopsided
15 est affiché comme, 15.
Roger Far
6

J'ai récemment rencontré ce problème dans Excel 2007 et je viens d'utiliser la fonction 'TRUNC' dans les cellules de valeur:

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

Travaillé exactement comme je le voulais

Droj
la source
3
Oui, TRUNC (x, 2) et ROUND (x, 2) feront l'affaire (en fonction du type de méthode d'arrondi recherché). Il vous suffit ensuite de définir le formatage de la cellule sur "Général" et les décimales ne seront affichées que si nécessaire. (Je vote pour marquer le poste de Droj comme réponse.)
Simon East
5

Voici une méthode utilisant la mise en forme conditionnelle.

  1. Faites un clic droit sur votre cellule, choisissez "Format de cellule"
  2. Sélectionnez "Personnalisé"
  3. Entrez "0. ####" (ajoutez plus ou moins de #s pour contrôler le nombre maximal de décimales)
  4. Cliquez sur OK
  5. Avec la cellule toujours sélectionnée, utilisez "Mise en forme conditionnelle" (peut être un élément de menu dans Format ou un bouton dans Accueil selon votre version Excel)
  6. Ajouter une nouvelle règle, basée sur la formule "= MOD (H32,1) = 0"

    modifier - la meilleure formule est "= MOD (ROUND (H32,2), 1) = 0", le nombre "2" représentant le nombre de décimales souhaité. la formule précédente laisse le point décimal final si le nombre est arrondi à un entier.

    Remplacez H32 dans la formule par l'ID de votre cellule, mais ASSUREZ-VOUS QU'IL N'Y A PAS DE SIGNES $! (Aucun signe $ vous assure de copier le format dans d'autres cellules)

  7. Pour le format de cette règle, sélectionnez l'onglet numéro, choisissez "Personnalisé".

  8. Cette fois, entrez la formule "0"
  9. Cliquez sur OK suffisamment de fois pour revenir à la feuille (varie selon les versions Excel)

Voilà, profitez-en de façon responsable! Si vous souhaitez copier le format dans d'autres cellules, n'oubliez pas que vous pouvez copier la cellule et utiliser "Collage spécial" avec l'option "Format".

John
la source
Pouvez-vous préciser si cela ne s'applique qu'à certaines versions (ou versions plus récentes) d'Excel? J'utilise toujours 2003 (et je soupçonne qu'un nombre embarrassant d'autres personnes le sont également) et lorsque je passe à la mise en forme conditionnelle, je n'ai pas la possibilité de modifier la mise en forme numérique, uniquement les polices, les bordures et les motifs. Merci
SSilk
Je viens d'essayer cette approche sur Excel 2010 et cela a bien fonctionné. Cela ne fonctionnera pas avec les versions antérieures d'Excel (du moins c'est ce que me dit mon vérificateur de "mode de compatibilité" dans Excel 2010).
Barfuin
2

N'oubliez pas que dans Reporting Services, vous pouvez également écrire une expression pour la mise en forme numérique. Dans ma situation, j'ai utilisé

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

comme expression de format numérique. Cela a généré un fichier Excel avec deux formats de cellule, sélectionnés selon que la valeur était un entier ou non.

Joshua Seigler
la source
1

Est-ce que vous / vos utilisateurs saisissez des valeurs directement dans les cellules ou si elles sont remplies par une formule ou une macro?

Si les cellules ne sont pas remplies directement par un humain, vous pouvez stocker les valeurs calculées dans une plage masquée, puis afficher un texte formaté à l'intention de l'utilisateur avec une formule comme celle-ci:

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

(où 'A1' est la cellule référencée)

La formule affichera les valeurs suivantes:

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

NB: La sortie de la formule est une chaîne de texte, pas un chiffre, donc:

  • La sortie par défaut est alignée à gauche.
  • Vous ne pouvez pas utiliser la sortie dans des calculs ultérieurs (vous devez plutôt utiliser la cellule d'origine référencée)

la source
1

Formater la cellule en tant que 'Général' puis, sous validation des données, limiter les valeurs à des nombres décimaux.


la source
Si vous devez éviter d'ajouter des formules (et probablement une nouvelle colonne) à votre feuille de calcul, la suggestion de Fred peut être la meilleure.
Simon East
1
Cela ne permettra pas aux gens d'entrer des nombres avec plus que la limite visuelle de chiffres décimaux.
Barfuin
1

Cela n’a pas besoin d’être aussi compliqué, cela peut être fait exclusivement avec la mise en forme conditionnelle. J'ai Excel 2010, donc cela peut ne pas fonctionner pour les versions antérieures.

  1. Formatez les cellules pour qu'elles soient générales. Le nombre de décimales pour certains nombres peut être très élevé.
  2. Mettez une cellule en surbrillance et cliquez sur Mise en forme conditionnelle. Cliquez sur Nouvelle règle, puis sur "Utiliser une formule".
  3. Utilisez la formule = (B1-INT (B1))> 0 (où B1 est la cellule que vous formatez)
  4. Cliquez sur le bouton Format et choisissez Personnalisé. Entrez [= 0] 0;. ## dans le champ Type.
  5. Appuyez sur Entrée plusieurs fois.
  6. Cliquez à nouveau sur Mise en forme conditionnelle, cliquez sur Gérer les règles et modifiez la règle que vous venez de créer. Modifiez la plage dans le champ "S'applique à" pour couvrir la plage que vous souhaitez couvrir.

Terminé.

Wayne Hoff
la source
1

Ma réponse supprime le point décimal ET supprime la valeur 0

en formatage conditionnel, écrivez:

General;#;;@

Cela devrait faire l'affaire.

Mr.J
la source
Cela affiche les zéros comme cellules vides.
lolmaus - Andrey Mikhaylov
0

En plus de l'excellente réponse de Luc ci-dessus, voici une variante basée sur son travail. Je ne voulais pas avoir un zéro dans la cellule s'il n'y avait pas de valeur. Laissez votre format de cellule comme général et utilisez cette formule:

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

Là encore, A1 est la cellule référencée.


la source
0

Utiliser la Roundfonction pour fournir des chiffres significatifs. Cela ne change pas le nombre de décimales affichées. Formatez simplement la cellule avec le generalformat numérique.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
Siva Charan
la source
Pourquoi toutes les formules compliquées INT (LOG ...? Pourquoi pas simplement ROUND (valeur, 2) et le format général?
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.##"))

Plus de points décimaux orphelins.

utilisateur228931
la source
0

Cela semble être le moyen le plus simple d’afficher une décimale quand il y a des nombres fractionnaires - et aucune décimale pour les nombres entiers:

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

ou avec des références de cellules:

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

Donne

15 = 15
9.23432234 = 9.23

en train de chercher
la source
Bienvenue sur SuperUser @lookingforsame. Juste une note pour faire attention aux détails cachés des questions cependant. Dans ce cas, l'opérateur dit que la sortie provient de SQL. Si les macros ne sont pas possibles, les formules peuvent ne pas l'être non plus. Il est parfois utile de poser une question sous forme de commentaire avant de répondre. Heureux de voir une nouvelle personne, heureux de répondre!
Julian Knight