我想要以十六进制格式设置 Microsoft Excel 2007 中的单元格格式,但不知道该如何操作。
是否有内置方法可以将单元格的基数从 10 更改为 16?
答案1
如前所述,公式 =DEC2HEX(A1) 转换为十六进制,而 DEC2HEX(A1,8) 转换为十六进制,并以 0 为前缀来表示 32 位。虽然添加前导 0 会使数字更具可读性,尤其是当您使用定点字体时,但当数字中的所有数字恰好是 0-9 时,十六进制和十进制版本可能会混淆(例如 327701=50015)。
一种改进方法是添加“0x”前缀。有两种方法可以做到这一点。="0x"&DEC2HEX(A1,8) 可以解决问题,但它会将字段更改为文本字段,因此无法再轻松地在公式中使用。另一种方法是使用自定义格式。如果将自定义格式“0x”@ 应用于单元格,则单元格的值仍可用于公式中。示例:
╔═══╦═════════════════╦══════════════╦════════════════════════════════╦═══════════════════╗ ║ ║ A║ B║ ║ ║ ╠═══╬══════════════════╬═══════════════╬═════════════════════════════════╬════════════════════╣ ║ 1 ║ ║ 值 ║ 对应公式 ║ 数字格式 ║ ║ 2 ║ 十进制 ║ 11162790 ║ 11162790 ║ 通用 ║ ║ 3 ║ 十六进制 ║ AA54A6 ║ =DEC2HEX(B2) ║ 一般 ║ ║ 4 ║ 前导 0 ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ 一般 ║ ║ 5 ║ 文本 0x 前缀 ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ “0x”@ ║ ║ 6 ║ 文本 0x 前缀 ║ 0x00AA54A6 ║ =“0x”&DEC2HEX(B2,8) ║ 常规 ║ ║ 7 ║ 使用 B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ 常规 ║ ║ 8 ║ 使用 B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ “0x”@ ║ ║ 9 ║ 尝试使用 B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) * 256) ║ 常规 ║ ╚═══╩═══════════════════╩═════════════════╩════════════════════════════════╩═══════════════════╝
但是,数字不同的大数字仍然难以阅读,因此我喜欢在十进制数字中加逗号,在十六进制数字中加“_”。首先,您需要获取数字的高 16 位和低 16 位。可以使用 = INT( A1 / 2^16 ) 检索 32 位数字的高 16 位。除以 2^16 相当于右移 16 位,INT 会删除小数余数。MOD 可用于获取任何 32 或 64 位数字的低 16 位;=MOD(A1, 2^16)。MOD 有效地取回余数,即低 16 位。下表显示了此操作的实际效果。
╔═══╦═════════════╦═════════════════╦══════════════════════════════════════════╦══════════╗ ║ ║ A║ B║ ║ ║ ╠═══╬════════════════╬══════════════════════╬═════════════════════════════════════════════╬═══════════╣ ║ 1 ║ ║ 值 ║ 对应公式 ║ 格式 ║ ║ 2 ║ 十进制 ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ 高位字节 ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ 一般 ║ ║ 4 ║ 低字节 ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ 通用 ║ ║ 5 ║ 全数字 ║ 0xB8B3_11A9 ║ =“0x”&DEC2HEX(INT(B2/2^16),4) ║ 一般 ║ ║ ║ ║ ║ & “_” & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩════════════════╩═══════════════════════╩══════════════════════════════════════════╩═══════════╝
顺便说一句,我要非常感谢https://ozh.github.io/ascii-tables/。我使用该链接创建了 ASCII 文本表。我只需将表格从我的 excel 电子表格复制到其输入部分,它就会自动创建漂亮的 unicode 文本布局。
答案2
如果您想格式化单元格以便输入十进制数并自动将其显示为十六进制数,那么这是不可能的。您可以将单元格格式化为文本并直接输入十六进制数(但请注意,Excel 不能使用这些数字进行计算),或者使用DEC2HEX()
和HEX2DEC()
函数在十进制和十六进制之间进行转换。
答案3
如果要转换的单元格是A1
使用=DEC2HEX(A1)
。
答案4
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
REPT 公式根据从十进制转换为十六进制后生成的十六进制字符串的长度以及所需的十六进制字符串长度重复“0”。在此示例中,我希望生成长度为 4 的十六进制字符串。
然后,将前导零连接到实际的十六进制字符串,从而生成所需长度的十六进制值。
优点:
- 轻松将公式复制到其他工作表。只需重新分配两个单元格引用即可,即 B3 中的十进制值。
- Excel 将此公式的结果视为十六进制值。您也可以在前面加上“0x”,但我认为没有必要。
注意:当我复制十六进制字符串时,我会使用这个,它们会以不同的长度被复制。我首先从原始值生成一列十进制值,然后我可以针对这些值运行此公式。