Como formatar uma célula do Microsoft Excel 2007 em hexadecimal?

27

Gostaria de formatar uma célula no Microsoft Excel 2007 em hexadecimal, mas não estou descobrindo como fazer isso.

Existe uma maneira interna de alterar a base de 10 para 16 para uma célula?

WilliamKF
fonte

Respostas:

18

Conforme mencionado anteriormente, a fórmula = DEC2HEX (A1) é convertida em hexadecimal e DEC2HEX (A1,8) é convertida em hexadecimal com o prefixo 0 para indicar 32 bits. Embora a adição dos 0s iniciais torne os números mais legíveis, especialmente se você usar uma fonte de ponto fixo, as versões hexadecimal e decimal podem se confundir quando todos os dígitos do número forem de 0 a 9 (por exemplo, 327701 = 50015).

Uma melhoria é adicionar o prefixo "0x". Existem 2 maneiras de fazer isso. = "0x" & DEC2HEX (A1,8) farão o truque, mas ele altera o campo para um campo de texto, para que não possa mais ser usado com facilidade em fórmulas. Outro método é usar um formato personalizado. Se você aplicar o formato personalizado "0x" @ à célula, o valor da célula ainda poderá ser usado em uma equação. Exemplos:

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ Valor Formula Fórmula correspondente Format Formato numérico ║
║ 2 ║ decimal ║ 11162790 ║ 11162790 ║ geral ║
║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Geral ║
║ 4 ║ 0s iniciais ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Geral ║
║ 5 ║ Prefixo do texto 0x (0x00AA54A6) = DEC2HEX (B2,8) ║ "0x" @ ║
(6) Texto prefixo 0x (0x00AA54A6) = "0x" e DEC2HEX (B2,8) (geral)
║ 7 ║ Use B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Geral ║
║ 8 ║ Use B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║
║ 9 ║ Tente usar B6 ║ # NÚM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Geral ║
╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝


No entanto, números grandes com dígitos variados ainda podem ser difíceis de ler, então eu gosto de colocar vírgulas em números decimais e "_" s em números hexadecimais. Primeiro, você precisa obter os 16 bits superior e inferior do número. Os 16 bits superiores de um número de 32 bits podem ser recuperados com = INT (A1 / 2 ^ 16). A divisão por 2 ^ 16 atua como um deslocamento à direita de 16 bits, e o INT remove o restante fracionário. MOD pode ser usado para obter os 16 bits inferiores de qualquer número de 32 ou 64 bits; = MOD (A1, 2 ^ 16). O MOD efetivamente recupera o restante, que são os 16 bits mais baixos. Aqui está uma tabela que mostra isso em ação.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣
║ 1 ║ Valor Formula Fórmula correspondente ║ Formato ║
║ 2 ║ decimal ║ 3.098.743.209 ║ 3098743209 ║ #, ## 0 ║
║ 3 ║ Bytes superiores ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Geral ║
║ 4 ║ Bytes inferiores ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Geral ║
║ 5 Number Número completo ║ 0xB8B3_11A9 ║ = "0x" e DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Geral ║
║ ║ ║ ║ & "_" & DEC2HEX (MOD (B2, 2 ^ 16), 4)
╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝


BTW, eu tenho que agradecer muito a https://ozh.github.io/ascii-tables/ . Eu usei esse link para criar as tabelas de texto ASCII. Acabei de copiar a tabela da minha planilha do Excel para a seção Entrada e ele criou automaticamente o belo layout de texto unicode.

OldEmbeddedGuy
fonte
16

Se você deseja formatar uma célula para poder digitar um número decimal e exibi-la automaticamente como um número hexadecimal, isso não é possível. Você pode formatar a célula como texto e inserir números hexadecimais diretamente (mas observe que o Excel não pode usá-los para cálculos) ou usar as funções DEC2HEX()e HEX2DEC()para converter entre a base 10 e a base 16.

Indrek
fonte
1
Para referência, há também o DEC2BIN()que se converte em binário. Para binário largura fixa, uso algo como=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg
1
Em um Excel 2013 localizado em alemão, DEC2HEX e HEX2DEC resultam na mensagem de erro #NAME ?. Com a Ajuda do Office, eu pude descobrir que as funções são chamadas DEZINHEX e HEXINDEZ, respectivamente.
Bernhard Hiller
Como estender = 0x1234AB para = 0x001234AB (preciso de largura fixa de 8)?
Danijel 27/01
@ Danijel Use o segundo parâmetro do DEC2HEX.
Vincent G
7

Se a célula a ser convertida for A1usada =DEC2HEX(A1).

nozes
fonte
2
Você pode adicionar um "0x" inicial ao seu valor hexadecimal. Use ="0x"&DEC2HEX(A1,4)para obter um resultado parecido 0x1AF2.
User5910
4

Se você precisar executar operações matemáticas em números convertidos em hexadecimal, primeiro converta-os em decimais, execute a operação e depois converta novamente em hexadecimal.

Por exemplo, se a célula A1tiver um número hexadecimal, como seria criado a partir desta fórmula:

=DEC2HEX(17)

que seria exibido como 11 e cell A2tem a fórmula:

=DEC2HEX(165)

que seria exibido como A5e você deseja adicioná-los, essa fórmula obterá o resultado desejado:

=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))

que seria exibido como B6

Teste-o
fonte
1
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

A fórmula REPT repete o "0" com base no comprimento da cadeia hexadecimal gerada pela conversão de um decimal e no comprimento desejado da cadeia HEX. Neste exemplo, estou procurando gerar seqüências HEX de comprimento 4.

Em seguida, você concatena os zeros à esquerda na cadeia HEX real, gerando o valor HEX do comprimento desejado.

Vantagens:

  1. Coping fácil da fórmula para outra planilha. Com apenas duas referências de célula a um valor decimal, B3, para reatribuir.
  2. Os resultados desta fórmula são tratados como valores HEX pelo Excel. Você também pode prefixar o "0x", mas não acho necessário.

Nota: Eu uso isso quando estou copiando seqüências de caracteres HEX e elas são copiadas em comprimentos variados. Primeiro, eu gero uma coluna de valores decimais a partir dos valores originais com os quais posso executar essa fórmula.

WSimpson
fonte
0

Aqui está uma solução que encontrei para garantir que posso formatar esses números hexadecimais no formato HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
Stephen Frick
fonte
2
Uma explicação do que está acontecendo no seu código tornaria a resposta mais útil.
precisa saber é o seguinte