¿Cómo formatear una celda de Microsoft Excel 2007 en hexadecimal?
Me gustaría formatear una celda en Microsoft Excel 2007 en hexadecimal pero no encuentro cómo hacerlo.
¿Existe una forma integrada de cambiar la base de 10 a 16 para una celda?
Me gustaría formatear una celda en Microsoft Excel 2007 en hexadecimal pero no encuentro cómo hacerlo.
¿Existe una forma integrada de cambiar la base de 10 a 16 para una celda?
Como se ha mencionado anteriormente, la fórmula =DEC2HEX(A1) convierte a hexadecimal, y DEC2HEX(A1,8) convierte a hexadecimal con el prefijo 0 para denotar 32 bits. Aunque añadir el 0 a la cabeza hace que los números sean más legibles, especialmente si se utiliza una fuente de punto fijo, las versiones hexadecimales y decimales pueden confundirse cuando todos los dígitos del número son 0-9 (por ejemplo, 327701=50015).
Una mejora es añadir el prefijo “0x”. Hay dos maneras de hacerlo. =“0x”&DEC2HEX(A1,8) sirve, pero cambia el campo a un campo de texto, por lo que ya no se puede utilizar fácilmente en las fórmulas. Otro método es utilizar un formato personalizado. Si aplicas el formato personalizado “0x”@ a la celda, entonces el valor de la celda puede seguir siendo utilizado en una ecuación. Ejemplos:
╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═════════════════════════════╬═══════════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Number Format ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║ ║ 3 ║ Hex ║ AA54A6 ║ =DEC2HEX(B2) ║ General ║ ║ 4 ║ leading 0's ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ General ║ ║ 5 ║ Text 0x prefix ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ Text 0x prefix ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ General ║ ║ 7 ║ Use B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ General ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ "0x"@ ║ ║ 9 ║ Try to use B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) \* 256) ║ General ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬════════════════════════════════════╬═════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Format ║ ║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ Upper Bytes ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ 4 ║ Lower Bytes ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ General ║ ║ 5 ║ Full Number ║ 0xB8B3\_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ ║ ║ ║ & "\_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝
Si quieres formatear una celda para que puedas escribir un número decimal y que se muestre automáticamente como un número hexadecimal, no es posible. Puedes formatear la celda como texto e introducir los números hexadecimales directamente (pero ten en cuenta que Excel no puede utilizarlos para los cálculos), o utilizar las funciones DEC2HEX()
y HEX2DEC()
para convertir entre base 10 y base 16.
Si necesitas realizar operaciones matemáticas con números convertidos a hexadecimal, primero conviértelos a decimal, realiza la operación y luego vuelve a convertirlos a hexadecimal.
Por ejemplo, si la celda A1
tiene un número hexadecimal, como se crearía a partir de esta fórmula
=DEC2HEX(17)
que se mostraría como 11, y la celda A2
tiene la fórmula
=DEC2HEX(165)
que se mostraría como A5
, y quieres sumarlos, entonces esta fórmula obtendría el resultado deseado:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
que se mostraría como B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
La fórmula REPT repite el “0” basándose en 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 se concatenan los ceros iniciales a la cadena HEX real, generando así el valor HEX de la longitud deseada.
Ventajas:
Nota: Utilizo esto cuando estoy copiando cadenas HEX y se copian con diferentes longitudes. Primero genero una columna de valores decimales a partir de los valores originales con los que puedo ejecutar esta fórmula.
Esta es una solución que encontré para poder 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))