Formate um número com casas decimais opcionais no Excel

76

Eu tenho números nas células no Excel. Quero que os números sejam formatados para que, se tiverem casas decimais, mostrem no máximo duas e, se não tiverem casas decimais, ele não mostrará nenhum.

Por exemplo.

  • 15 deve ser formatado como 15, NÃO 15,00
  • 14.3453453 deve ser formatado como 14,35
  • 12.1 deve ser formatado como 12.1
  • 0 deve ser formatado como 0

O código de formato personalizado mais próximo que eu criei é 0.##. Infelizmente, o formato 15.00é 15. (observe o ponto decimal extra).

Para complicar ainda mais o problema, a planilha é resultado de uma exportação do SQL Server Reporting Services. Portanto, nenhuma macro é possível. Bem, parece que 0.##é a minha melhor aposta, e eles podem simplesmente viver com o período extra.

Raio
fonte

Respostas:

29

Como alternativa, você pode resolver o problema de ponto decimal "opcional" usando a seguinte solução:

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

Isso adicionará a casa decimal e o valor fracionário de acordo, enquanto formata números negativos de maneira mais legível.

Quanto à pergunta original do pôster, você ainda precisa arredondar / truncar os pontos decimais "extras" usando uma fórmula. No entanto, esta é uma fórmula simples, =ROUND(<value>,<desired decimal places>)que não é extremamente computacionalmente cara.

Exemplos:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
Ross
fonte
3
Esta resposta merece mais votos. Ele manipulou o ponto decimal corretamente sem usar a formatação condicional. No meu caso específico, quero mostrar todas as casas decimais, para que nem precise modificar a fórmula.
wilson
11
Generaltem o problema de entrar em notação científica se o número tiver muitas casas decimais, por exemplo, em 2.6532E-06vez de 0.0000026532.
Dan Dascalescu
+1 Isso foi útil para resolver um problema específico da necessidade de exibir valores de milhares de dólares (por exemplo, mostrar US $ 40.000 como US $ 40k e US $ 10.500 como US $ 10,5k), nos rótulos de uma Tabela Dinâmica (onde a formatação condicional não é uma opção). Código de formato $General\kfez isso perfeitamente!
Dan Henderson
17

Aplique Formatação Condicional para números não decimais.

Por exemplo, A1 é a célula de destino.

  1. Formate A1 como "###, ###. 00". Isso será usado para o número decimal.
  2. Defina Formatação Condicional para números não decimais.

    • Condição: Valor da célula igual a = TRUNC (A1).
    • Formato: ###,###

Abaixo está o resultado:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
slhck
fonte
Só tive um problema com o número 4.001, que arredondava para 4.00 no visor, mas não satisfazia a fórmula de formatação condicional (4.001 <> 4) e ainda mostrava como "4.". I utilizados nesta fórmula condicional para resolvê-lo: = ROUND ($ A1; 2) = TRUNCAR ($ A1)
leokhorn
14

Os formatos personalizados do Excel podem fornecer uma resposta parcial

Formatos personalizados para números no Excel são inseridos neste formato:

  • formato numérico positivo; formato numérico negativo; formato zero; formato de texto

Um formato que se aproxima do seu requisito, mas sai na casa decimal para números sem decimais é:

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

Exemplo:

  • 15 é exibido como 15.
  • 14.3453453 é exibido como 14.35
  • 12.1 é exibido como 12.1
  • 0 é exibido como 0
Robert Mearns
fonte
Esta é de longe a melhor resposta.
KyloRen
4
No entanto, na verdade, não fornece uma solução válida, nem mesmo uma solução possível. Ele possui informações úteis sobre formatos de números personalizados.
Disparinado
15 é exibido como, 15.
Roger Far
6

Encontrei isso recentemente no Excel 2007 e acabei usando a função 'TRUNC' nas células de valor:

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

Funcionou exatamente do jeito que eu queria ...

Droj
fonte
3
Sim, TRUNC (x, 2) e ROUND (x, 2) farão o trabalho (dependendo do tipo de método de arredondamento que você procura). Você só precisa definir a formatação da célula como "Geral" e as casas decimais serão exibidas apenas se necessário. (Eu voto para marcar o post de Droj como a resposta.)
Simon Médio
5

Aqui está um método usando formatação condicional.

  1. Clique com o botão direito do mouse no seu celular, escolha "Formatar célula"
  2. Selecione "Personalizado"
  3. Digite "0. ####" (adicione mais ou menos # para controlar o número máximo de casas decimais)
  4. Clique OK
  5. Com a célula ainda selecionada, use "Formatação Condicional" (pode ser um item de menu em Formato ou botão na Página Inicial, dependendo da sua versão do Excel)
  6. Adicione uma nova regra, com base na fórmula "= MOD (H32,1) = 0"

    editar - a melhor fórmula é "= MOD (ROUND (H32,2), 1) = 0" com o '2' sendo o número desejado de casas decimais. a fórmula anterior deixa o ponto decimal à direita se o número arredondar para um número inteiro.

    Substitua H32 na fórmula pelo ID do seu celular, mas verifique se não existem sinais de $! (Nenhum sinal de $ garante que você copie o formato para outras células)

  7. Para o formato desta regra, selecione a guia numérica, escolha "Personalizado"

  8. Desta vez, insira a fórmula "0"
  9. Clique em OK vezes suficientes para retornar à planilha (varia entre as versões do Excel)

Lá vai você, aproveite com responsabilidade! Se você deseja copiar o formato para outras células, lembre-se de que pode copiar a célula e usar "Colar Especial" com a opção "Formato".

John
fonte
Você poderia esclarecer se isso se aplica apenas a determinadas (ou versões mais recentes) do Excel? Ainda estou usando 2003 (e suspeito que muitos outros também são embaraçosos) e, quando vou para Formatação condicional, não tenho opção para modificar a formatação de números, apenas Fonte, Borda e Padrões. Graças
SSilk
Eu apenas tentei essa abordagem no Excel 2010 e funcionou bem. Ele não funcionará com versões anteriores do Excel (pelo menos é o que o meu verificador "modo de compatibilidade" no Excel 2010 me diz).
12133 barfuin
2

Lembre-se de que, no Reporting Services, você também pode escrever uma expressão para a formatação de números. Na minha situação, eu costumava

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

como a expressão de formato numérico. Isso produziu um arquivo do Excel com dois formatos de célula, selecionados por o valor ser ou não um número inteiro.

Joshua Seigler
fonte
1

Você / seus usuários inserem valores diretamente nas células ou estão sendo preenchidos por uma fórmula ou uma macro?

Se as células não estiverem sendo preenchidas diretamente por um ser humano, você poderá armazenar os valores calculados em um intervalo oculto e exibir o texto formatado para o usuário com uma fórmula como esta:

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

(onde 'A1' é a célula que está sendo referenciada)

A fórmula exibirá valores como este:

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

NB: A saída da fórmula é uma sequência de texto, não numérica, portanto:

  • O padrão de saída é alinhado à esquerda.
  • Você não pode usar a saída em outros cálculos (em vez disso, você deve usar a célula original que está sendo referenciada)

fonte
1

Formate a célula como 'Geral' e, em seguida, na validação de dados, restrinja os valores aos decimais


fonte
Se você precisar evitar adicionar fórmulas (e provavelmente uma nova coluna) à sua planilha, a sugestão de Fred pode ser a melhor.
Simon East.
11
Isso não permitirá que as pessoas insiram números com mais do que o limite visual de dígitos decimais.
barfuin
1

Isso não precisa ser tão complicado - pode ser feito exclusivamente com a Formatação Condicional. Eu tenho o Excel 2010, portanto, isso pode não funcionar para versões anteriores.

  1. Formate as células para serem gerais. O número de casas decimais para alguns números pode ser muito alto.
  2. Realce uma célula e clique em Formatação Condicional. Clique em Nova regra e, em seguida, "Use a Formula".
  3. Use a fórmula = (B1-INT (B1))> 0 (onde B1 é a célula que você está formatando)
  4. Clique no botão Formatar e escolha Personalizado. Digite [= 0] 0;. ## no campo Tipo.
  5. Pressione Enter várias vezes.
  6. Clique em Formatação condicional novamente, clique em Gerenciar regras e edite a regra que você acabou de criar. Altere o intervalo no campo "Aplica-se a" para cobrir o intervalo que você deseja que seja coberto.

Tudo feito.

Wayne Hoff
fonte
1

Minha resposta remove o ponto decimal E remove o valor 0

na formatação condicional, escreva:

General;#;;@

Isso deve fazer o truque.

Mr.J
fonte
Isso exibe zeros como células vazias.
21418 Andrey Mikhaylov #
0

Além da grande resposta de Lucas acima, há uma variação baseada em seu trabalho. Eu não queria ter um zero na célula se não houvesse valor. Deixe o formato da sua célula como geral e use esta fórmula:

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

Novamente, onde A1 é a célula que está sendo referenciada.


fonte
0

Usando a Roundfunção para fornecer números significativos. No entanto, isso não altera o número de casas decimais exibidas. Apenas formate a célula com o generalformato numérico.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
Siva Charan
fonte
Por todo o INT complicado (LOG ... fórmula Porque não basta ROUND (valor, 2) e formato como o general?
Simon Médio
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.##"))

Chega de pontos decimais órfãos.

user228931
fonte
0

Essa parece ser a maneira mais simples de exibir um decimal quando houver números fracionários - e nenhum decimal exibido para números inteiros:

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

ou com referências de célula:

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

15 = 15
9,23432234 = 9,23

procurando
fonte
Bem-vindo ao SuperUser @lookingforsame. Apenas uma nota para observar os detalhes ocultos das perguntas. Nesse caso, o op está dizendo que a saída é do SQL; se as macros não forem possíveis, as fórmulas também não serão. Às vezes, vale a pena fazer uma pergunta como comentário antes de responder. É bom ver uma nova pessoa, feliz em responder!
Julian Knight