如何用十六进制格式化Microsoft Excel 2007单元格?
我想在Microsoft Excel 2007中用十六进制格式化一个单元格,但没有找到如何做到这一点。
有没有一种内置的方法可以将单元格的基数从10改为16?
我想在Microsoft Excel 2007中用十六进制格式化一个单元格,但没有找到如何做到这一点。
有没有一种内置的方法可以将单元格的基数从10改为16?
如前所述,公式=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文本布局。
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
REPT公式根据从十进制转换而来的十六进制字符串的长度和HEX字符串的期望长度重复 “0"。在这个例子中,我希望生成长度为4的HEX字符串。
然后将前导零与实际的HEX字符串相连接,从而生成所需长度的HEX值。
优点。
1.容易将公式复制到其他工作表中。由于只有两个单元格引用十进制值,B3,要重新分配。 2. 这个公式的结果被Excel视为HEX值。你也可以在前面加上 "0x",但我认为没有必要。
注:当我在复制HEX字符串时,我会使用这个方法,它们会以不同的长度被复制过来。我首先从原始值中生成一列十进制值,然后我可以根据这个公式运行。
这是我找到的一个解决方案,以确保我可以将这些十六进制数字格式化为HTML格式。
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))