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

如何用十六进制格式化Microsoft Excel 2007单元格?

我想在Microsoft Excel 2007中用十六进制格式化一个单元格,但没有找到如何做到这一点。

有没有一种内置的方法可以将单元格的基数从10改为16?

答案 (6)

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

如前所述,公式=DEC2HEX(A1)转换为十六进制,DEC2HEX(A1,8)转换为十六进制,前缀为0表示32位。虽然添加前导的0使数字更易读,特别是当你使用定点字体时,当数字中的所有数字恰好是0-9时,十六进制和十进制版本可能会混淆(例如327701=50015)。

一种改进方法是添加 “0x "前缀。="0x”&DEC2HEX(A1,8)可以做到这一点,但它将字段改为文本字段,所以它不能再轻易地用于公式中。另一种方法是使用自定义格式。如果你将自定义格式 “0x”@应用到单元格中,那么单元格的值仍然可以在公式中使用。示例:

0x1

╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ 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 ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝

然而,数字不同的大数还是很难读懂,所以我喜欢把逗号放到十进制数字中,把"_“放到十六进制数字中。首先你需要得到数字的上16位和下16位。32位数的上16位可以用=INT( A1 / 2^16 )来检索。除以2^16就像16位的右移,INT去掉了小数余数。MOD可以用来获取任何32位或64位数字的低16位;=MOD(A1, 2^16)。MOD有效地得到了余数,也就是低16位。下面是一个表格,显示了它的作用。 ╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ 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,我必须非常感谢 https://ozh.github.io/ascii-tables/ 。我使用那个链接来创建ASCII文本表。我只是把表格从我的excel电子表格复制到它的输入部分,它就自动创建了漂亮的unicode文本布局。

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

如果你想格式化一个单元格,使你可以输入一个十进制数并自动显示为十六进制数,那么这是不可能的。你可以将单元格格式化为文本,直接输入十六进制数(但注意Excel不能使用这些数字进行计算),或者使用DEC2HEX()HEX2DEC()函数在10进制和16进制之间转换。

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

如果要转换的单元格是A1,则使用=DEC2HEX(A1)

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

如果你需要对转换为十六进制的数字进行数学运算,首先将它们转换为十进制,进行运算,然后再转换回十六进制。

例如,如果单元格A1有一个十六进制的数字,比如将从这个公式中创建。

=DEC2HEX(17)

会显示为11,而单元格A2的公式为:

=DEC2HEX(165)

会显示为A5,你想把它们加在一起,那么这个公式将得到所需的结果:

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

会显示为B6

1
1
1
2018-07-25 14:35:12 +0000
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

REPT公式根据从十进制转换而来的十六进制字符串的长度和HEX字符串的期望长度重复 “0"。在这个例子中,我希望生成长度为4的HEX字符串。

然后将前导零与实际的HEX字符串相连接,从而生成所需长度的HEX值。

优点。

1.容易将公式复制到其他工作表中。由于只有两个单元格引用十进制值,B3,要重新分配。 2. 这个公式的结果被Excel视为HEX值。你也可以在前面加上 "0x",但我认为没有必要。

注:当我在复制HEX字符串时,我会使用这个方法,它们会以不同的长度被复制过来。我首先从原始值中生成一列十进制值,然后我可以根据这个公式运行。

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

这是我找到的一个解决方案,以确保我可以将这些十六进制数字格式化为HTML格式。

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))