我正在处理一个电子表格,其中有一个[256]x[256]
如下所示的表格或网格:
B c D E F G IY
3 Address: [byte][byte][byte][byte] ... [256]
4 0x100000
5 0x100400
6 0x100800
7 0x100C00
.
.
.
259
该表具有以下自定义格式"0x"@
。
现在,我正在尝试进行计算...我正在尝试计算列中垂直向下的地址值B
。
我不再手动输入每个值B5
,B6
而是BN
尝试在0x400
每次向下移动一行时增加它......
人们会认为对于单元格B5
他们会使用类似的东西=SUM(HEX2DEC(B4),1024)
,因为B4
显示为十六进制转换0x100000
为十进制然后添加1024
因为1024
十进制是0x400
十六进制。
0x=Sum(HEX2DEC(B4),1024))
但是,Excel 正在打印单元格中的文本。
我不确定我在这里做错了什么。我期望得到0x100400
打印结果。
我尝试了各种公式组合,但似乎都没有效果,但是,如果我做一些简单的事情,比如使用单元格中的公式将单元格设置D4
为等于,Excell 就会显示在单元格中。B4
=B4
D4
0x100000
D4
当我尝试使用任何其他公式时,我没有得到十六进制的值......
即使我尝试:
`=Sum(B4,1024)` in `B5`
它仍然显示
`0x=Sum(B4,1024)` in `B5`
当我尝试时:
`=Sum(B4,0x400)` in `B5`
再次显示
`0x=Sum(B4,0x400)` in `B5`...
答案1
答案2
我认为这与 excel 将其视为函数前的字符串有关。这样,格式就胜过了函数计算。
如果您执行 =TEXT(DEC2HEX(SUM(HEX2DEC(B4),1024)),"0"),它在我的测试中有效。
答案3
问题几乎肯定出在结果格式为“0x”@ 的单元格中。
发帖人使用的是 Excel 2007,我无法在其中进行测试。但是,我们都习惯于看到在具有常规格式的单元格中输入各种公式,按下后Enter
会看到结果与引用单元格的格式一起出现。何时由 Excel 决定。由于这里只引用了一个单元格,所以可以。
今天(2021 年)使用 Office 365,对于这种情况的发生,我没有遇到任何问题,因为...它不会。但也许在 Excel 2007 中会这样。
但是,存在一种相关但更有可能的可能性:输出单元格直接格式化为“0x”@。
请注意,公式的结果是一个字符串(Excel 中的所有非小数实际上都是文本字符串)。因此它完全符合格式... Excel 可能只是接受输入的字符串(即使它以“=”开头),并将其作为字符串处理,使其符合“0x”@ 字符串的格式。
给出所显示的准确结果。
当我在常规格式的单元格中输入公式时,如上所述,它工作得很好。输入它进行编辑,然后保存(非)编辑就可以了。但如果我事先格式化单元格,它就无法给出好的结果,而是最终与此处报告的完全一样。
因此,虽然提到的第一种可能性可能是这种情况,但第二种可能性肯定是这种情况。因此,这肯定是这种情况(至少您知道,这是高度肯定的)。
(主要的反对意见是“哦不,Excel 总是将以‘=’开头的内容视为公式”,但事实证明实际情况并非如此,甚至不仅仅是列出它可能不会将其视为公式的时间。)
如何解决?只需将输出列恢复为常规格式,这样公式就可以工作了,然后,由于这样做没有任何损失,因为输出已经是字符串,而不是数字,因此TEXT()
使用格式将其包装起来。如果结果单元格中的值需要进一步使用,请将其引用包装为RIGHT()
适合情况的引用(可能需要LEN()
在其中,但所有地址的长度相同,可以对进行硬编码RIGHT()
。将其结果传递到使用引用的任何公式中。