使用DATEVALUE函数时出现Excel #Value错误

时间:2014-07-24 15:23:43

标签: excel date datetime

在单元格A2中,我有7/21/2014 12:44:36 PM

当我使用DATEVALUE(LEFT(A2;FIND(" ";A2)-1))时,我收到错误#VALUE

当我使用LEFT(A2;FIND(" ";A2)-1)时,我得到7/21/2014

我需要做什么才能使DATEVALUE(LEFT(A2;FIND(" ";A2)-1))函数返回日期?

3 个答案:

答案 0 :(得分:10)

DATEVALUE()旨在通过纯文本生成Date。您的单元格目前是Date/Time,这是一个数值。我建议使用以下解决方案之一从单元格中获取日期。

使用DATE()


这是我推荐的最干净的选项和方法。

=DATE(YEAR(A2),MONTH(A2),DAY(A2))

YEAR()获取单元格中的Year值,MONTH()获取Month值,DAY()获取Day值。 DATE()函数采用YearMonthDay值,因此将它们传递到DATE(),我们可以从Date获取A2Date

使用INT()


如果我们查看A241841.5309722222的数值,我们会看到它是41841.。数字的整个部分(.5309722222)是日期,小数部分(INT(A2))是时间。因此,如果我们将41841转换为整数,我们将丢失小数部分,以便剩下的所有内容(=INT(A2) )都是日期。这是我们使用INT()

的公式
Text

使用ROUNDDOWN(A2,0)=FLOOR.MATH(A2)=FLOOR(A2,1)可以实现同样的想法。

使用DATEVALUE()


虽然第一个解决方案是最干净的,但有一种方法可以使用DATEVALUE()执行此操作,其中包括首先将单元格转换为TextTEXT()函数采用值和格式字符串,因此我们将单元格值格式化为=TEXT(A2,"yyyy-mm-dd") ,如下所示

2014-07-21

这给了我们

=DATEVALUE(TEXT(A2,"yyyy-mm-dd"))

然后我们将结果传递给DATEVALUE()

=DATEVALUE(LEFT(A2,FIND(" ",A2)-1))

您需要将结果格式化为日期。

使用LEFT()DATEVALUE()


根据我发现的this Stackoverflow question,似乎问题可能是格式不一致的结果,因此您可以尝试此解决方案

number

我已将此结果和其他方法包含在下面的屏幕截图中。您可以通过我使用TYPE()命令查看我在text和{{1}}上测试此值的值。

结果

Results of formulas on different value types

格式


我假设您只想要计算日期,但如果您只想显示日期,则可以format the cell to only show the date and ignore the time element尽管时间元素仍然存在于单元格中。我假设你知道这件事,但既然你没有说明,这是一个可能的解决方案。

答案 1 :(得分:1)

请尝试:

 =INT(A2)

并格式化结果以适应。

在评论中我刚刚看到你提到" = INT(A2)返回#VALUE!"所以我建议选择你的日期单元格,DATA>数据工具, - 文本到列,分隔符,分隔符选项卡(仅限),以及在第3步(共3步)中选择MDY作为日期:或将您的语言环境更改为说美国。

如果你有前导空格(虽然没有显示),如果两个都没有工作try = INT(TRIM(A2))。

如果仍无效,请尝试应用=CLEAN

如果仍然没有任何效果,那么您的日期来源以及导入方式将会有所帮助,以及您的区域设置和默认日期格式的更多详细信息。

答案 2 :(得分:0)

日期宏取决于系统日期格式,并且根据配置的系统日期格式,宏可能无法工作。尝试以下解决方案我在另一台系统日期/时间格式不同的笔记本电脑上打开excel文件后遇到了类似的问题。在使用日期函数的目标笔记本电脑公式开始给出错按照以下步骤操作后,错误消失了。

左键单击任务栏右下角显示时间的部分 单击日期和时间设置 点击更改日期和时间 更改日历设置 单击重置以返回原始值 在所有打开的对话框上单击“确定” 现在excel公式错误应该消失