101 votes

Formater un nombre avec des décimales facultatives dans Excel

J'ai des chiffres dans des cellules d'Excel. Je veux que les nombres soient formatés de sorte que s'ils ont des décimales, ils s'affichent jusqu'à un maximum de deux, et s'ils n'ont pas de décimales, ils n'en affichent aucune.

Par exemple.

  • 15 doit être formaté comme 15, PAS 15.00
  • 14.3453453 doit être formaté comme 14.35
  • 12.1 doit être formaté comme 12.1
  • 0 doit être formaté comme 0

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

Pour compliquer encore le problème, la feuille de calcul est le résultat d'une exportation à partir de SQL Server Reporting Services. Les macros ne sont donc pas possibles. Enfin, on dirait que 0.## est mon meilleur pari, et ils peuvent juste vivre avec la période supplémentaire.

5voto

Mr.J Points 195

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

en écriture de formatage conditionnel :

General;#;;@

Cela devrait faire l'affaire.

2voto

Joshua Seigler Points 21

N'oubliez pas que dans Reporting Services, vous pouvez également écrire une expression pour le formatage des nombres. Dans ma situation, j'ai utilisé

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

comme expression du format des nombres. Cela a produit un fichier Excel avec deux formats de cellule, sélectionnés selon que la valeur est un nombre entier ou non.

1voto

Vos utilisateurs saisissent-ils des valeurs directement dans les cellules, ou celles-ci sont-elles alimentées par une formule ou une macro ?

Si les cellules ne sont pas peuplées directement par un humain, vous pourrait stocker les valeurs calculées dans une plage cachée, puis afficher un texte formaté à 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 à laquelle on fait référence)

La formule affichera les valeurs comme ceci :

 -------------------------
 |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 numérique, donc :

  • Par défaut, la sortie est alignée à gauche.
  • Vous ne pouvez pas utiliser la sortie dans d'autres calculs (vous devez plutôt utiliser la cellule originale référencée).

1voto

Formatez la cellule en tant que "Général" puis, sous la validation des données, limitez les valeurs aux décimales.

1voto

Wayne Hoff Points 11

Cela ne doit pas être si compliqué - vous pouvez le faire 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 être Général. Le nombre de décimales de certains chiffres 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é. Saisissez [=0]0 ;.## dans le champ Type.
  5. Appuyez sur la touche Entrée plusieurs fois.
  6. Cliquez à nouveau sur Mise en forme conditionnelle, cliquez sur Gérer les règles, puis 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.

Tout est fait.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X