Calc的DATEVALUE问题()

时间:2017-06-30 14:37:57

标签: libreoffice-calc

我对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?它肯定会非常明显,但我没有看到它。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

如记录所示:DATEVALUE“文本是有效的日期表达式,必须使用引号输入。”换句话说:参数文本必须是字符串而不是日期值。但是您的A1值已经是日期值。如果您想查看该号码,只需将A1格式化为Number或在另一个单元格中使用公式=A1,并将此单元格格式设置为Number

TEXT(A1;"DD/MM/YYYY";@)只是错误的语法而#NAME?错误来自第三个参数@,它不受支持。见TEXT - >只有两个论点。

如果公式中有日期值,则结果单元格也可能会自动格式化为日期。如果您不需要此项,例如因为需要计算日差,则将其重新格式化为Number

示例:

enter image description here

答案 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中正确管理日期操作感到困惑。

此致