Formatee un número con decimales opcionales en Excel

76

Tengo números en celdas en Excel. Quiero que los números estén formateados para que si tienen decimales se muestren hasta un máximo de dos, y si no tienen decimales, no mostrarán ninguno.

Por ejemplo.

  • 15 debe formatearse como 15, NO 15.00
  • 14.3453453 debe formatearse como 14.35
  • 12.1 debe formatearse como 12.1
  • 0 debe formatearse como 0

El código de formato personalizado más cercano que se me ocurrió es 0.##. Lamentablemente, este formato 15.00es 15. (tenga en cuenta el punto decimal adicional).

Para complicar aún más el problema, la hoja de cálculo es el resultado de una exportación de SQL Server Reporting Services. Entonces no hay macros posibles. Oh, bueno, parece que 0.##es mi mejor apuesta, y pueden vivir con el período extra.

Rayo
fuente

Respuestas:

29

Alternativamente, puede resolver el problema del punto decimal "opcional" utilizando la siguiente solución:

Formato numérico: General;[Red](General)

Esto agregará el lugar decimal y el valor fraccional en consecuencia, al tiempo que formatea los números negativos de una manera más legible.

En cuanto a la pregunta original del póster, aún necesita redondear / truncar los puntos decimales "adicionales" utilizando una fórmula. Sin embargo, esta es una fórmula simple =ROUND(<value>,<desired decimal places>)que no es extremadamente costosa computacionalmente.

Ejemplos:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
Ross
fuente
3
Esta respuesta merece más votos a favor. Manejó el punto decimal correctamente sin usar formato condicional. En mi caso específico, quiero mostrar todos los lugares decimales, por lo que ni siquiera necesito modificar la fórmula.
Wilson
1
Generaltiene el problema de entrar en notación científica si el número tiene demasiados decimales, por ejemplo, en 2.6532E-06lugar de 0.0000026532.
Dan Dascalescu
+1 Esto fue útil para mí al resolver un problema específico de la necesidad de mostrar valores de miles de dólares (por ejemplo, mostrar $ 40,000 como $ 40k y $ 10,500 como $ 10.5k), en las etiquetas de una tabla dinámica (donde el formato condicional no es un opción). ¡El código de formato lo $General\khizo perfectamente!
Dan Henderson
17

Aplicar formato condicional para números no decimales.

Por ejemplo, A1 es la celda objetivo.

  1. Formatee A1 como "###, ###. 00". Esto se usará para el número decimal.
  2. Definir formato condicional para números no decimales.

    • Condición: Valor de celda igual a = TRUNC (A1).
    • Formato: ###,###

A continuación se muestra el resultado:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
slhck
fuente
Acabo de tener un problema con el número 4.001, que se redondeó a 4.00 en la pantalla, pero no satisfaría la fórmula de formato condicional (4.001 <> 4) y aún se mostraría como "4.". Utilicé esta fórmula condicional para resolverlo: = REDONDO ($ A1; 2) = TRUNC ($ A1)
leokhorn el
14

Los formatos personalizados de Excel pueden proporcionar una respuesta parcial

Los formatos personalizados para números en Excel se ingresan en este formato:

  • formato de número positivo; formato de número negativo; formato cero; formato de texto

Un formato que se acerca a su requerimiento, pero deja en el lugar decimal para los números sin decimales es:

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

Ejemplo:

  • 15 se muestra como 15.
  • 14.3453453 se muestra como 14.35
  • 12.1 se muestra como 12.1
  • 0 se muestra como 0
Robert Mearns
fuente
Esta es, de lejos, la mejor respuesta.
KyloRen
44
Sin embargo, en realidad no proporciona una solución válida, ni siquiera una posible solución. Tiene información útil sobre formatos de números personalizados.
Lopsided
15 se muestra como, 15.
Roger Far
6

Me encontré con esto recientemente en Excel 2007 y terminé usando la función 'TRUNC' en las celdas de valor:

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

Funcionó exactamente como yo quería ...

Droj
fuente
3
Sí, tanto TRUNC (x, 2) como ROUND (x, 2) harán el trabajo (dependiendo del tipo de método de redondeo que esté buscando). Entonces solo necesita establecer el formato de celda en "General" y los lugares decimales solo se mostrarán si es necesario. (Voto para marcar la publicación de Droj como la respuesta.)
Simon East
5

Aquí hay un método que usa formato condicional.

  1. Haga clic derecho en su celda, elija "Formatear celda"
  2. Seleccione "Personalizado"
  3. Ingrese "0. ####" (agregue más o menos #s para controlar el número máximo de decimales)
  4. Haga clic en Aceptar
  5. Con la celda aún seleccionada, use "Formato condicional" (puede ser un elemento de menú en Formato o botón en Inicio, dependiendo de su versión de Excel)
  6. Agregue una nueva regla, basada en la fórmula "= MOD (H32,1) = 0"

    editar - la mejor fórmula es "= MOD (REDONDA (H32,2), 1) = 0" con el '2' como el número deseado de lugares decimales. la fórmula anterior deja el punto decimal final si el número se redondea a un entero.

    Reemplace H32 en la fórmula con la ID de su celda, ¡pero ASEGÚRESE DE QUE NO HAY SIGNOS DE $! (Sin signos $ asegura que copie el formato a otras celdas)

  7. Para el formato de esta regla, seleccione la pestaña número, elija "Personalizado"

  8. Esta vez, ingrese la fórmula "0"
  9. Haga clic en Aceptar suficientes veces para volver a la hoja (varía entre las versiones de Excel)

Ahí tienes, ¡disfruta responsablemente! Si desea copiar el formato a otras celdas, recuerde que puede copiar la celda y usar "Pegado especial" con la opción "Formato".

John
fuente
¿Podría aclarar si esto solo se aplica a ciertas (o versiones más recientes) de Excel? Todavía estoy usando 2003 (y sospecho que una cantidad vergonzosa de otros también lo están) y cuando voy al formato condicional, no tengo la opción de modificar el formato del número, solo Fuente, Borde y Patrones. Gracias
SSilk
Acabo de probar este enfoque en Excel 2010 y funcionó bien. No funcionará con versiones anteriores de Excel (al menos eso es lo que me dice mi comprobador de "modo de compatibilidad" en Excel 2010).
barfuin
2

Recuerde que en Reporting Services, también puede escribir una expresión para el formato de número. En mi situación, solía

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

como la expresión de formato de número. Esto produjo un archivo de Excel con dos formatos de celda, seleccionados por si el valor era o no un número entero.

Joshua Seigler
fuente
1

¿Están usted / sus usuarios ingresando valores directamente en las celdas, o están siendo rellenados por una fórmula o una macro?

Si un humano no llena las celdas directamente, puede almacenar los valores calculados en un rango oculto y luego mostrar texto formateado al usuario con una fórmula como esta:

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

(donde 'A1' es la celda a la que se hace referencia)

La fórmula mostrará valores como este:

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

Nota: La salida de la fórmula es una cadena de texto, no numérica, por lo que:

  • El resultado predeterminado es alinearse a la izquierda.
  • No puede usar la salida en ningún cálculo adicional (en su lugar, debe usar la celda original a la que se hace referencia)

fuente
1

Formatee la celda como 'General' y luego, bajo validación de datos, restrinja los valores a decimales


fuente
Si necesita evitar agregar fórmulas (y probablemente una nueva columna) a su hoja de cálculo, entonces la sugerencia de Fred puede ser la mejor.
Simon East
1
Esto no permitirá que las personas ingresen números con más del límite visual de dígitos decimales.
barfuin
1

Esto no tiene que ser tan complicado: se puede hacer exclusivamente con Formato condicional. Tengo Excel 2010, por lo que esto puede no funcionar para versiones anteriores.

  1. Formatee las celdas para que sean generales. El número de lugares decimales para algunos números puede ser muy alto.
  2. Resalte una celda y haga clic en Formato condicional. Haga clic en Nueva regla, luego "Usar una fórmula".
  3. Use la fórmula = (B1-INT (B1))> 0 (donde B1 es la celda que está formateando)
  4. Haga clic en el botón Formato y elija Personalizado. Ingrese [= 0] 0;. ## en el campo Tipo.
  5. Presiona Enter varias veces.
  6. Haga clic en Formato condicional nuevamente, haga clic en Administrar reglas y edite la regla que acaba de crear. Cambie el rango en el campo "Se aplica a" para cubrir el rango que desea cubrir.

Todo listo.

Wayne Hoff
fuente
1

Mi respuesta elimina el punto decimal Y elimina el valor 0

en formato condicional escriba:

General;#;;@

Esto debería funcionar.

Mr.J
fuente
Esto muestra ceros como celdas vacías.
lolmaus - Andrey Mikhaylov
0

Además de la gran respuesta de Luke aquí arriba, hay una variación basada en su trabajo. No quería tener un cero en la celda si no había ningún valor. Deje su formato de celda como general y use esta fórmula:

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

Nuevamente, donde A1 es la celda a la que se hace referencia.


fuente
0

Usando la Roundfunción para proporcionar cifras significativas. Sin embargo, esto no cambia el número de decimales que se muestran. Sin generalembargo, solo formatee la celda con formato de número.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
Siva Charan
fuente
¿Por qué toda la complicada fórmula INT (LOG ...)? ¿Por qué no solo REDONDEAR (valor, 2) y formatear como 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.##"))

No más puntos decimales huérfanos.

usuario228931
fuente
0

Esta parece ser la forma más simple de mostrar un Decimal cuando hay números fraccionarios, y No Decimal para números enteros:

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

o con referencias de celda:

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

Da

15 = 15
9.23432234 = 9.23

buscando lo mismo
fuente
Bienvenido a SuperUser @lookingforsame. Sin embargo, solo una nota para tener cuidado con los detalles ocultos de las preguntas. En este caso, el operador dice que la salida es de SQL, si las macros no son posibles, las fórmulas tampoco lo serán. A veces vale la pena hacer una pregunta como comentario antes de responder. Es bueno ver a una persona nueva, feliz de responder!
Julian Knight