我对LibreOffice Calc的 DATEVALUE()函数的行为感到困惑,如下例所示:
Cell content format display
A1 01/07/2017 Date 01/07/2017
B1 =DATEVALUE("01/07/2017") Quantity 42917
C1 =DATEVALUE(A1) (whatever) Err:502
D1 =DATEVALUE(TEXT(A1;"DD/MM/YYYY";@))
(whatever) #NAME?
为什么C1和D1没有显示正确答案,即B1?它肯定会非常明显,但我没有看到它。有什么帮助吗?
答案 0 :(得分:2)
如记录所示:DATEVALUE“文本是有效的日期表达式,必须使用引号输入。”换句话说:参数文本必须是字符串而不是日期值。但是您的A1
值已经是日期值。如果您想查看该号码,只需将A1
格式化为Number
或在另一个单元格中使用公式=A1
,并将此单元格格式设置为Number
。
而TEXT(A1;"DD/MM/YYYY";@)
只是错误的语法而#NAME?
错误来自第三个参数@
,它不受支持。见TEXT - >只有两个论点。
如果公式中有日期值,则结果单元格也可能会自动格式化为日期。如果您不需要此项,例如因为需要计算日差,则将其重新格式化为Number
。
示例:
答案 1 :(得分:0)
对于我之前留言中的错误,我很抱歉,你的批评肯定是正确的,Axel。非常感谢。
但遗憾的是,我还没能用正确的语法解决我的初始问题。它起源于尝试评估一个单元格中的公式,例如 B1 :
Cell content display
A1 01/07/2017 01/07/2017
B1 =DATEVALUE($A$1) - DATE(2000;1;1) Err:502
由于 A1 是日期的输入单元格(在天文电子表格中)我在开始时并不理解将 datevalue()函数附加到它的原因,这似乎是多余的,但我试图在任何情况下使其工作,作为显然最直接的解决方案(鉴于目标只是执行日期的算术运算)
C1 =$A$1 - DATE(2000;1;1) #VALUE
在文档中无效(从 Excel 原始文件导入)。在我的测试中, C1 不显示错误,而是显示日期,结果只是错误的。
我对原始公式
的正确再现所采取的措施 D1 =DATEVALUE(CONCATENATE(CHAR(34);$A$1;CHAR(34)))-DATE(2000;1;1)
Err:502
既没有效果:
E1 =DATEVALUE(CONCATENATE(CHAR(34);TEXT($A$1;"DD/MM/YYYY");CHAR(34)))-DATE(2000;1;1)
Err:502
我最终找到的解决方案是:
F1 =N($A$1) - DATE(2000;1;1) 6391
给出正确答案并且很简单。所以问题似乎至少已经解决了,但是我仍然对如何在Calc中正确管理日期操作感到困惑。
此致