2008-08-22 04:31:59 +0000 2008-08-22 04:31:59 +0000
77
77

Formatear un número con decimales opcionales en Excel

Tengo números en celdas en Excel. Quiero que los números se formateen de manera que si tienen decimales se muestren hasta un máximo de dos, y si no tienen decimales no se muestre 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 he encontrado es 0.##. Desgraciadamente, esto formatea 15.00 como 15. (nótese el punto decimal extra).

Para complicar aún más el asunto, la hoja de cálculo es el resultado de una exportación desde SQL Server Reporting Services. Así que no es posible utilizar macros. Oh, bueno, parece que 0.## es mi mejor opción, y pueden vivir con el punto extra.

Respuestas (9)

33
33
33
2012-05-08 18:16:49 +0000

Alternativamente, puede resolver el problema de la coma decimal “opcional” utilizando la siguiente solución:

Formato de los números: General;[Red](General)

Esto añadirá el decimal y el valor fraccionario correspondiente, al tiempo que formatea los números negativos de una manera más legible.

En cuanto a la pregunta original del cartel, todavía hay que redondear/truncar los puntos decimales “extra” utilizando una fórmula. Sin embargo, se trata de una fórmula simple de =ROUND(<value>,<desired decimal places>) que no es extremadamente costosa computacionalmente.

Ejemplos:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
15
15
15
2008-09-07 17:09:26 +0000

Los formatos personalizados de Excel pueden proporcionar una respuesta parcial

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

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

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

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

Ejemplo:

  • 15 se muestra como 15.
  • 14.3453453 se visualiza como 14.35
  • 12.1 se visualiza como 12.1
  • 0 se visualiza como 0
5
5
5
2011-08-26 00:28:32 +0000

Este es un método que utiliza el formato condicional.

  1. Haz clic con el botón derecho del ratón en la celda y elige “Formato de celda”
  2. Selecciona “Personalizado”
  3. Selecciona “Custom”
  4. Introduce “0.####” (añade más o menos #s para controlar el número máximo de decimales)
  5. Haga clic en “OK”
  6. Con la celda aún seleccionada, utiliza “Formato condicional” (puede ser un elemento de menú en Formato o un botón en Inicio, dependiendo de tu versión de Excel)
  7. Añade una nueva regla, basada en la fórmula “=MOD(H32,1)=0”

  8. Para el formato de esta regla, seleccione la pestaña de números, elija “Personalizado”

  9. Esta vez, introduzca la fórmula “0”

    1. Haz clic en OK suficientes veces para volver a la hoja (varía entre las versiones de Excel)

¡Ya está, disfruta responsablemente! Si quieres copiar el formato a otras celdas, recuerda que puedes copiar la celda y usar “Pegado especial” con la opción “Formato”.

5
5
5
2010-02-03 17:31:42 +0000

Me encontré con esto recientemente en Excel 2007 y acabé utilizando 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 quería…

2
2
2
2012-03-01 20:57:08 +0000

Recuerda que en Reporting Services también puedes escribir una expresión para el formato de los números. En mi situación, utilicé

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

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

1
1
1
2018-02-12 01:45:01 +0000

Mi respuesta elimina el punto decimal Y Elimina el valor

en la escritura de formato condicional:

General;#;;@

Esto debería funcionar.

1
1
1
2013-12-04 16:57:19 +0000

Esto no tiene que ser tan complicado - se puede hacer exclusivamente con el Formato Condicional. Tengo Excel 2010, así que esto puede no funcionar para versiones anteriores.

  1. Formatear las celdas para que sean Generales. El número de decimales para algunos números puede ser muy alto.
  2. Resalte una celda y haga clic en Formato condicional. Haz clic en Nueva Regla y luego en “Usar una Fórmula”.
  3. Utiliza la fórmula =(B1-INT(B1))\N0 (donde B1 es la celda a la que estás dando formato)
  4. Haz clic en el botón Formato y elige Personalizado. Introduce [=0]0;.## en el campo Tipo.
  5. Pulsa Intro varias veces.
  6. Vuelve a hacer clic en Formato condicional, haz clic en Gestionar reglas y edita la regla que acabas de crear. Cambia el rango en el campo “Se aplica a” para que cubra el rango que quieres cubrir.

Todo hecho.

0
0
0
2014-01-17 17:34:13 +0000

Esta parece ser la forma más sencilla de que se muestre un Decimal cuando hay números fraccionarios - y que no se muestre ningún Decimal para los números enteros:

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

o con referencias de celdas:

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

Da

15 = 15 9.23432234 = 9.23

0
0
0
2013-06-04 11:16:43 +0000
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.