Como o Excel mostra valores numéricos como “moedas” personalizadas (por exemplo, cobre, prata, ouro)?

3

Eu gostaria de ter o seguinte formato em uma célula no Excel:

123g 99s 99c

100 cobre (c) = 1 prata (s)
100 prata = 1 ouro (g)

Para que, se eu inserir 12394 , ele será mostrado como "1g 23s 94c".

Isso é possível de alguma forma?

    
por Feroc 04.09.2012 / 19:12

2 respostas

6

Experimente este formato personalizado:

#0"g" #0"s" 00"c"

Observe que isso mostrará as três "unidades", independentemente do valor real, portanto, 12 será mostrado como "0g 0s 12c". Se você quer apenas mostrar a maior "unidade" com quantidade diferente de zero (então 12 seria "12c", 598 seria "5s 98c", etc), você pode ajustá-lo da seguinte maneira, para na verdade, aplicar formatos diferentes com base no valor:

[>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"

Não é perfeito, por exemplo, 10245 será mostrado como "1g 02s 45c", em vez de "1g 2s 45c", porque apenas divide o valor da célula em vez de dividi-lo por 100 para obter as quantidades individuais, mas além disso, deve fazer o que quiser.

Para lidar com valores negativos, você terá que combinar o formato acima com a formatação condicional, porque o Excel só pode ter até três condições em um único formato numérico. Tente o seguinte (estou supondo que o Excel 2010, também deve funcionar em 2007, não tenho certeza sobre versões anteriores):

  1. Selecione as células e vá para "Formatação condicional" → "Nova regra ..." (na guia Início)
  2. Selecione "Usar uma fórmula para determinar quais células devem ser formatadas"
  3. Na caixa da fórmula, digite =A1>=0 e clique em "Formatar ..."
  4. Selecione a guia "Número", depois "Personalizado" e insira o formato numérico acima:% [>=10000]#0"g" #0"s" 00"c";[>=100]#0"s" 00"c";#0"c"
  5. Clique em "OK" duas vezes.
  6. Repita as etapas 1 e 2.
  7. Na caixa da fórmula, digite =A1<0 e clique em "Formatar ..."
  8. Selecione a guia "Número" e "Personalizado" e insira o seguinte formato numérico (basicamente igual ao primeiro, exceto os valores negativos:) [<=-10000]-#0"g" #0"s" 00"c";[<=-100]-#0"s" 00"c";#0"c"
  9. Clique em "OK" duas vezes.

Se você precisar modificar ou remover as regras de formatação, ou expandi-las para aplicar a mais células, basta ir em "Formatação condicional" → "Gerenciar regras".

Outra opção é usar uma função do VBA para formatar os valores. Pressione Alt + F11 para abrir o editor VBA, clique com o botão direito do mouse na janela Projeto e selecione Inserir → Módulo e cole o seguinte código (apenas uma das muitas maneiras de escrever essa função, claro):

Function MyFormat(intValue)
    Dim strReturn As String
    If intValue < 0 Then strReturn = "-"
    intValue = Abs(intValue)

    If intValue > 10000 Then
        strReturn = strReturn & Fix(intValue / 10000) & "g"
        intValue = intValue - (Fix(intValue / 10000)) * 10000
    End If

    If intValue > 100 Then
        If Len(strReturn) > 0 Then strReturn = strReturn & " "
        strReturn = strReturn & Fix(intValue / 100) & "s"
        intValue = intValue - (Fix(intValue / 100)) * 100
    End If

    If Len(strReturn) > 0 Then strReturn = strReturn & " "
    strReturn = strReturn & intValue & "c"

    MyFormat = strReturn
End Function

Essa abordagem oferece maior flexibilidade do que o uso de formatos numéricos personalizados, e é mais fácil de usar do que o gerenciamento de regras de formatação condicionais - basta digitar =MyFormat(12345) em vez de 12345 . A desvantagem, no entanto, é que você perde a capacidade de realizar operações matemáticas com os dados, porque o Excel agora vê os valores como texto, não como números.

    
por 04.09.2012 / 19:26
0

O seguinte formato personalizado fará o que você quiser:

??\g ??\s ??\c
    
por 04.09.2012 / 19:25