Formatta un numero con posizioni decimali opzionali in Excel


76

Ho numeri nelle celle in Excel. Voglio che i numeri siano formattati in modo tale che se hanno posizioni decimali mostrino un massimo di due e se non hanno posizioni decimali non ne mostrano nessuno.

Per esempio.

  • 15 deve essere formattato come 15, NON 15,00
  • 14.3453453 deve essere formattato come 14.35
  • 12.1 deve essere formattato come 12.1
  • 0 deve essere formattato come 0

Il codice formato personalizzato più vicino che ho trovato è 0.##. Sfortunatamente questo formato 15.00come 15. (notare il punto decimale aggiuntivo).

Per complicare ulteriormente il problema, il foglio di calcolo è il risultato di un'esportazione da SQL Server Reporting Services. Quindi non sono possibili macro. Vabbè, sembra che 0.##sia la mia scommessa migliore, e possono semplicemente vivere con il periodo extra.

Risposte:


29

In alternativa, è possibile risolvere il problema del punto decimale "opzionale" utilizzando la seguente soluzione:

Formato numerico: General;[Red](General)

Ciò aggiungerà di conseguenza la cifra decimale e il valore frazionario, formattando i numeri negativi in ​​un modo più leggibile.

Per quanto riguarda la domanda originale del poster, è comunque necessario arrotondare / troncare i punti decimali "extra" utilizzando una formula. Tuttavia, questa è una formula semplice =ROUND(<value>,<desired decimal places>)che non è estremamente costosa dal punto di vista computazionale.

Esempi:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)

3
Questa risposta merita più voti. Ha gestito correttamente il punto decimale senza utilizzare la formattazione condizionale. Nel mio caso specifico, voglio mostrare tutte le cifre decimali, quindi non ho nemmeno bisogno di modificare la formula.
Wilson

1
Generalha il problema di passare alla notazione scientifica se il numero ha troppi decimali, ad esempio 2.6532E-06invece di 0.0000026532.
Dan Dascalescu,

+1 Questo è stato utile per me nel risolvere un problema specifico della necessità di visualizzare valori di migliaia di dollari (ad esempio, mostrare $ 40.000 come $ 40k e $ 10.500 come $ 10,5k), nelle etichette di una tabella pivot (dove la formattazione condizionale non è un opzione). Il codice di formato $General\kha funzionato perfettamente!
Dan Henderson,

17

Applica formattazione condizionale per numeri non decimali.

Ad esempio, A1 è la cella target.

  1. Formato A1 come "###, ###. 00". Questo verrà utilizzato per il numero decimale.
  2. Definire la formattazione condizionale per i numeri non decimali.

    • Condizione: Valore cella uguale a = TRUNC (A1).
    • Formato: ###,###

Di seguito è riportato il risultato:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30

Ho appena avuto un problema con il numero 4.001, che ha arrotondato a 4.00 sul display, ma non soddisferebbe la formula di formattazione condizionale (4.001 <> 4) e mostrerebbe comunque come "4.". Ho usato questa formula condizionale per risolverlo: = ROUND ($ A1; 2) = TRUNC ($ A1)
leokhorn

14

I formati personalizzati di Excel possono fornire una risposta parziale

I formati personalizzati per i numeri in Excel sono inseriti in questo formato:

  • formato numerico positivo; formato numerico negativo; formato zero; formato testo

Un formato che si avvicina alle tue esigenze, ma che si trova al decimale per i numeri senza decimali è:

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

Esempio:

  • 15 viene visualizzato come 15.
  • 14.3453453 viene visualizzato come 14.35
  • 12.1 viene visualizzato come 12.1
  • 0 viene visualizzato come 0

Questa è di gran lunga la risposta migliore.
KyloRen,

4
Tuttavia, in realtà non fornisce una soluzione valida, o anche una possibile soluzione. Ha informazioni utili sui formati numerici personalizzati.
Sbilenco l'

15 viene visualizzato come, 15.
Roger Far,

6

Mi sono imbattuto di recente in Excel 2007 e ho appena finito di utilizzare la funzione "TRUNC" nelle celle del valore:

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

Ha funzionato esattamente come volevo ...


3
Sì, sia TRUNC (x, 2) che ROUND (x, 2) faranno il lavoro (a seconda del tipo di metodo di arrotondamento che stai cercando). Devi solo impostare la formattazione della cella su "Generale" e le posizioni decimali verranno visualizzate solo se necessario. (Voto per contrassegnare il post di Droj come risposta.)
Simon East,

5

Ecco un metodo che utilizza la formattazione condizionale.

  1. Fai clic con il pulsante destro del mouse sulla cella, scegli "Formato cella"
  2. Seleziona "Personalizzato"
  3. Immettere "0. ####" (aggiungere più o meno # per controllare il numero massimo di posizioni decimali)
  4. Clicca OK
  5. Con la cella ancora selezionata, usa "Formattazione condizionale" (potrebbe essere una voce di menu in Formato o pulsante in Home a seconda della versione di Excel)
  6. Aggiungi una nuova regola, basata sulla formula "= MOD (H32,1) = 0"

    modifica - la formula migliore è "= MOD (ROUND (H32,2), 1) = 0" con il '2' che è il numero desiderato di cifre decimali. la formula precedente lascia il punto decimale finale se il numero viene arrotondato a un numero intero.

    Sostituisci H32 nella formula con l'ID della tua cella, ma ASSICURATI CHE NON SIANO SEGNI $! (Nessun segno $ ti assicura di copiare il formato in altre celle)

  7. Per il formato di questa regola, seleziona la scheda numerica, scegli "Personalizzato"

  8. Questa volta, inserisci la formula "0"
  9. Fai clic su OK abbastanza volte per tornare al foglio (varia tra le versioni di Excel)

Ecco qua, divertiti responsabilmente! Se vuoi copiare il formato su altre celle, ricorda che puoi copiare la cella e usare "Incolla speciale" con l'opzione "Formato".


Potresti chiarire se questo vale solo per alcune (o versioni più recenti) di Excel? Sto ancora usando il 2003 (e sospetto che lo siano anche un numero imbarazzante di altri) e quando vado alla formattazione condizionale, non ho alcuna opzione per modificare la formattazione del numero, solo Font, Border e Patterns. Grazie
SSilk,

Ho appena provato questo approccio su Excel 2010 e ha funzionato bene. Non funzionerà con le versioni precedenti di Excel (almeno questo è ciò che mi dice il mio correttore "modalità compatibilità" in Excel 2010).
Barfuin,

2

Ricorda che in Reporting Services puoi anche scrivere un'espressione per la formattazione dei numeri. Nella mia situazione, ho usato

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

come espressione del formato numerico. Ciò ha prodotto un file Excel con due formati di cella, selezionato se il valore era intero o meno.


1

Tu / i tuoi utenti inserite valori direttamente nelle celle o vengono popolati da una formula o una macro?

Se le celle non vengono popolate direttamente da un essere umano, è possibile memorizzare i valori calcolati in un intervallo nascosto e quindi visualizzare all'utente il testo formattato con una formula come questa:

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

(dove "A1" è la cella a cui viene fatto riferimento)

La formula mostrerà valori come questo:

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

NB: l'output della formula è una stringa di testo, non un numero, quindi:

  • L'output predefinito è allineato a sinistra.
  • Non è possibile utilizzare l'output in ulteriori calcoli (invece, è necessario utilizzare la cella originale a cui si fa riferimento)

1

Formatta la cella come "Generale", quindi sotto la convalida dei dati limita i valori ai decimali


Se devi evitare di aggiungere formule (e probabilmente una nuova colonna) al tuo foglio di calcolo, il suggerimento di Fred potrebbe essere il migliore.
Simon East,

1
Ciò non consentirà alle persone di inserire numeri che superano il limite visivo delle cifre decimali.
Barfuin,

1

Questo non deve essere così complicato: può essere fatto esclusivamente con la formattazione condizionale. Ho Excel 2010, quindi potrebbe non funzionare con le versioni precedenti.

  1. Formatta le celle come Generali. Il numero di cifre decimali per alcuni numeri può essere molto elevato.
  2. Evidenzia una cella e fai clic su Formattazione condizionale. Fai clic su Nuova regola, quindi su "Usa una formula".
  3. Usa la formula = (B1-INT (B1))> 0 (dove B1 è la cella che stai formattando)
  4. Fai clic sul pulsante Formato e scegli Personalizzato. Immettere [= 0] 0;. ## nel campo Tipo.
  5. Premi Invio più volte.
  6. Fare di nuovo clic su Formattazione condizionale, fare clic su Gestisci regole e Modifica la regola appena creata. Modificare l'intervallo nel campo "Applies to" per coprire l'intervallo che si desidera coprire.

Tutto fatto.


1

La mia risposta rimuove il punto decimale E rimuove il valore 0

nella formattazione condizionale scrivere:

General;#;;@

Questo dovrebbe fare il trucco.


Questo visualizza gli zeri come celle vuote.
lolmaus - Andrey Mikhaylov,

0

Oltre alla grande risposta di Luke qui sopra c'è una variazione basata sul suo lavoro. Non volevo avere uno zero nella cella se non c'era valore. Lascia il formato della cella come generale e usa questa formula:

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

Ancora una volta dove A1 è la cella a cui si fa riferimento.


0

Utilizzo della Roundfunzione per fornire cifre significative. Ciò non modifica tuttavia il numero di cifre decimali visualizzate. Basta formattare la cella con il generalformato numerico però.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))

Perché tutta la complicata INT (LOG ... formula? Perché non solo ROUND (valore, 2) e formattare come Generale?
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.##"))

Non più punti decimali orfani.


0

Questo sembra essere il modo più semplice per visualizzare un decimale in presenza di numeri frazionari e nessun decimale per numeri interi:

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

o con riferimenti di cella:

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

15 = 15
9.23432234 = 9.23


Benvenuto in SuperUser @lookingforsame. Solo una nota a cui prestare attenzione per i dettagli nascosti delle domande. In questo caso, l'op dice che l'output proviene da SQL, se le macro non sono possibili, le formule potrebbero non esserlo neanche. A volte vale la pena porre una domanda come commento prima di rispondere. È bello vedere una persona nuova, felice risposta!
Julian Knight,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.