¿Cómo formatear una celda de Microsoft Excel 2007 en hexadecimal?

27

Me gustaría formatear una celda en Microsoft Excel 2007 en hexadecimal, pero no encuentro cómo hacerlo.

¿Hay una forma integrada de cambiar la base de 10 a 16 para una celda?

WilliamKF
fuente

Respuestas:

18

Como se mencionó anteriormente, la fórmula = DEC2HEX (A1) se convierte en hexadecimal, y DEC2HEX (A1,8) se convierte en hexadecimal con 0 prefijo para denotar 32 bits. Si bien agregar los 0 iniciales hace que los números sean más legibles, especialmente si usa una fuente de punto fijo, las versiones hexadecimal y decimal pueden confundirse cuando todos los dígitos del número son 0-9 (por ejemplo, 327701 = 50015).

Una mejora es agregar el prefijo "0x". Hay 2 formas de hacer esto. = "0x" y DEC2HEX (A1,8) harán el truco, pero cambia el campo a un campo de texto, por lo que ya no se puede usar fácilmente en las fórmulas. Otro método es usar un formato personalizado. Si aplica el formato personalizado "0x" @ a la celda, el valor de la celda aún puede usarse en una ecuación. Ejemplos:

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ ║ Valor ║ Fórmula correspondiente ║ Formato de número ║
║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║
║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ General ║
║ 4 ║ ceros a la izquierda ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ General ║
║ 5 ║ Texto 0x prefijo ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║
║ 6 ║ Texto 0x prefijo ║ 0x00AA54A6 ║ = "0x" y DEC2HEX (B2,8) ║ General ║
║ 7 ║ Use B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ General ║
║ 8 ║ Use B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║
║ 9 ║ ¡Intenta usar B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ General ║
╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝


Sin embargo, los números grandes con dígitos variables aún pueden ser difíciles de leer, por lo que me gusta poner comas en números decimales y "_" en números hexadecimales. Primero necesitas obtener los 16 bits superiores e inferiores del número. Los 16 bits superiores de un número de 32 bits se pueden recuperar con = INT (A1 / 2 ^ 16). Dividir por 2 ^ 16 actúa como un desplazamiento a la derecha de 16 bits, y el INT elimina el resto fraccional. MOD puede usarse para obtener los 16 bits inferiores de cualquier número de 32 o 64 bits; = MOD (A1, 2 ^ 16). El MOD efectivamente recupera el resto, que son los 16 bits inferiores. Aquí hay una tabla que muestra esto en acción.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣
║ 1 ║ ║ Valor ║ Fórmula correspondiente ║ Formato ║
║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #, ## 0 ║
║ 3 ║ Bytes superiores ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ General ║
║ 4 ║ Bytes inferiores ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ General ║
║ 5 ║ Número completo ║ 0xB8B3_11A9 ║ = "0x" y DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ General ║
║ ║ ║ ║ & "_" y DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║
╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝


Por cierto, tengo que agradecer a https://ozh.github.io/ascii-tables/ . Usé ese enlace para crear las tablas de texto ASCII. Acabo de copiar la tabla de mi hoja de cálculo de Excel en su sección de entrada y creó automáticamente el diseño agradable de texto unicode.

OldEmbeddedGuy
fuente
16

Si desea formatear una celda para poder escribir un número decimal y mostrarlo automáticamente como un número hexadecimal, entonces eso no es posible. Puede formatear la celda como texto e ingresar números hexadecimales directamente (pero tenga en cuenta que Excel no puede usarlos para los cálculos), o usar las funciones DEC2HEX()y HEX2DEC()para convertir entre la base 10 y la base 16.

Indrek
fuente
1
Como referencia, también hay DEC2BIN()que convierte a binario. Para binarios de ancho fijo, use algo como=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg
1
En un Excel 2013 localizado alemán, DEC2HEX y HEX2DEC dan como resultado el mensaje de error # ¿NOMBRE ?. Con la Ayuda de Office, pude descubrir que las funciones se llaman DEZINHEX y HEXINDEZ, resp.
Bernhard Hiller
¿Cómo extiendo = 0x1234AB a = 0x001234AB (necesito un ancho fijo de 8)?
Danijel
@Danijel Use el segundo parámetro de DEC2HEX.
Vincent G
7

Si la celda a convertir es A1usar =DEC2HEX(A1).

nueces
fuente
2
Es posible que desee agregar un "0x" inicial a su valor hexadecimal. Úselo ="0x"&DEC2HEX(A1,4)para obtener un resultado similar a este 0x1AF2.
Usuario5910
4

Si necesita realizar operaciones matemáticas en números convertidos a hexadecimal, primero conviértalos a decimal, realice la operación y luego vuelva a convertir a hexadecimal.

Por ejemplo, si la celda A1tiene un número hexadecimal, como se crearía a partir de esta fórmula:

=DEC2HEX(17)

que se mostrará como 11, y la celda A2tiene la fórmula:

=DEC2HEX(165)

que se mostrará como A5, y desea agregarlos juntos, entonces esta fórmula obtendría el resultado deseado:

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

que se mostraría como B6

Pruébalo
fuente
1
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

La fórmula REPT repite el "0" en función de la longitud de la cadena hexadecimal que se genera al convertirla desde un decimal y la longitud deseada de la cadena HEX. En este ejemplo, estoy buscando generar cadenas HEX de longitud 4.

Luego concatena los ceros a la cadena HEX real, generando así el valor HEX de la longitud deseada.

Ventajas:

  1. Manejo fácil de la fórmula a otra hoja de trabajo. Con solo dos referencias de celda a un valor decimal, B3, para reasignar.
  2. Los resultados de esta fórmula son tratados como valores HEX por Excel. También podría prefijar el "0x", pero no lo encuentro necesario.

Nota: Utilizo esto cuando estoy copiando cadenas HEX y se copian a diferentes longitudes. Primero genero una columna de valores decimales a partir de los valores originales con los que puedo ejecutar esta fórmula.

WSimpson
fuente
0

Aquí hay una solución que encontré para asegurarme de que puedo formatear estos números hexadecimales en formato HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
Stephen Frick
fuente
2
Una explicación de lo que está sucediendo en su código haría que la respuesta sea más útil.
WilliamKF