Come formattare una cella di Microsoft Excel 2007 in esadecimale?
Vorrei formattare una cella in Microsoft Excel 2007 in esadecimale ma non trovo come farlo.
C'è un modo integrato per cambiare la base da 10 a 16 per una cella?
Vorrei formattare una cella in Microsoft Excel 2007 in esadecimale ma non trovo come farlo.
C'è un modo integrato per cambiare la base da 10 a 16 per una cella?
Come detto prima, la formula =DEC2HEX(A1) converte in esadecimale, e DEC2HEX(A1,8) converte in esadecimale con il prefisso 0 per indicare 32 bit. Mentre l'aggiunta degli 0 iniziali rende i numeri più leggibili, specialmente se usi un font a virgola fissa, le versioni esadecimale e decimale possono confondersi quando tutte le cifre del numero sono 0-9 (per esempio 327701=50015).
Un miglioramento è aggiungere il prefisso “0x”. Ci sono 2 modi per farlo. =“0x”&DEC2HEX(A1,8) farà il trucco, ma cambia il campo in un campo di testo, quindi non può più essere usato facilmente nelle formule. Un altro metodo è usare un formato personalizzato. Se si applica il formato personalizzato “0x”@ alla cella, allora il valore della cella può ancora essere usato in un'equazione. Esempi:
╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ 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 ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝
Tuttavia, numeri grandi con cifre variabili possono essere ancora difficili da leggere, quindi mi piace mettere le virgole nei numeri decimali e “_"s nei numeri esadecimali. Per prima cosa devi ottenere i 16 bit superiori e inferiori del numero. I 16 bit superiori di un numero a 32 bit possono essere recuperati con = INT( A1 / 2^16 ). La divisione per 2^16 agisce come uno spostamento a destra di 16 bit, e l'INT rimuove il resto frazionario. MOD può essere usato per ottenere i 16 bit inferiori di qualsiasi numero a 32 o 64 bit; =MOD(A1, 2^16). Il MOD ottiene effettivamente il resto, che sono i 16 bit inferiori. Ecco una tabella che mostra questo in azione.
╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ 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) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝
BTW, devo dare un grande ringraziamento a https://ozh.github.io/ascii-tables/ . Ho usato quel link per creare le tabelle di testo ASCII. Ho semplicemente copiato la tabella dal mio foglio di calcolo excel nella sua sezione Input e ha creato automaticamente il bel layout di testo unicode.
Se volete formattare una cella in modo da poter digitare un numero decimale e averlo automaticamente visualizzato come numero esadecimale, allora non è possibile. Puoi formattare la cella come testo e inserire direttamente i numeri esadecimali (ma nota che Excel non può usarli per i calcoli), o usare le funzioni DEC2HEX()
e HEX2DEC()
per convertire tra base 10 e base 16.
Se hai bisogno di eseguire operazioni matematiche su numeri convertiti in esadecimale, prima convertili in decimale, esegui l'operazione, poi riconverti in esadecimale.
Per esempio, se la cella A1
ha un numero esadecimale, come quello che verrebbe creato da questa formula:
=DEC2HEX(17)
che verrebbe visualizzato come 11, e la cella A2
ha la formula:
=DEC2HEX(165)
che verrebbe visualizzato come A5
, e volete sommarli, allora questa formula otterrà il risultato desiderato:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
che verrebbe visualizzato come B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
La formula REPT ripete lo “0” in base alla lunghezza della stringa hex che viene generata convertendola da un decimale, e la lunghezza desiderata della stringa HEX. In questo esempio sto cercando di generare stringhe HEX di lunghezza 4.
Si concatenano poi gli zeri iniziali alla stringa HEX attuale, generando così il valore HEX della lunghezza desiderata.
Vantaggi:
Nota: uso questa formula quando sto copiando stringhe HEX e queste vengono copiate con lunghezze diverse. Genero prima una colonna di valori decimali dai valori originali con cui posso poi eseguire questa formula.
Ecco una soluzione che ho trovato per assicurarmi di poter formattare questi numeri esadecimali in formato HTML:
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))