2012-09-26 17:14:51 +0000 2012-09-26 17:14:51 +0000
27
27

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?

Risposte (6)

20
20
20
2017-04-20 01:48:01 +0000

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.

16
16
16
2012-09-26 17:24:39 +0000

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.

7
7
7
2012-09-26 17:20:16 +0000

Se la cella da convertire è A1 usa =DEC2HEX(A1).

4
4
4
2013-12-31 03:16:44 +0000

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

1
1
1
2018-07-25 14:35:12 +0000
=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:

  1. Facile copiatura della formula in altri fogli di lavoro. Con solo due riferimenti di cella a un valore decimale, B3, da riassegnare.
  2. I risultati di questa formula sono trattati come valori HEX da Excel. Si potrebbe anche mettere il prefisso “0x”, ma non lo trovo necessario.

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.

0
0
0
2017-01-19 19:55:02 +0000

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))