【问题标题】:Excel #Value error when using DATEVALUE function使用 DATEVALUE 函数时的 Excel #Value 错误
【发布时间】:2014-09-16 06:03:48
【问题描述】:

在单元格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)) 需要做什么才能仅返回日期?

【问题讨论】:

  • 你的问题我不清楚,尤其是“需要做那个功能”。您希望返回什么?
  • 请格式化您帖子中的代码,并尝试表达一个实际问题。您是否正在尝试修复损坏的功能?你的实际目标是什么?

标签: excel date datetime


【解决方案1】:

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

使用DATE()


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

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

YEAR() 从单元格中获取 Year 值,MONTH() 获取 Month 值,DAY() 获取 Day 值。 DATE() 函数接受 YearMonthDay 值,因此通过将它们传递给 DATE(),我们可以从 A2 获取 Date 值。

使用INT()


如果我们在A2 中查看您的Date 的数值,我们会发现它是41841.5309722222。数字的整个部分 (41841.) 是日期,小数部分 (.5309722222) 是时间。因此,如果我们使用INT(A2) 将此值转换为整数,我们将丢失小数部分,因此剩下的 (41841) 就是日期。这就是我们使用INT()的公式

=INT(A2)

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

使用DATEVALUE()


虽然第一个解决方案是最干净的,但有一种方法可以使用 DATEVALUE() 执行此操作,首先将单元格转换为 TextTEXT() 函数接受一个值和一个格式字符串,因此我们将单元格值格式化为Text,如下所示

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

这给了我们

2014-07-21

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

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

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

使用LEFT()DATEVALUE()


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

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

我在下面的屏幕截图中包含了我的结果和其他方法。你可以通过我使用TYPE() 命令看到我在numbertext 上测试的值。

结果

格式化


我假设您只需要用于计算目的的日期,但如果您只想显示日期,您可以format the cell to only show the date and ignore the time element,尽管时间元素仍会出现在单元格中。我假设你知道这一点,但由于你没有指定,这是一个可能的解决方案。

【讨论】:

  • @pnuts, 1) 他的原始函数适用于字符串,我已经尝试过了。他得到#VALUE 错误的唯一方法是如果他试图在数值上使用DATEVALUE(),所以我假设它是数字的。此外,无论如何,我的大多数解决方案都使用字符串(包括我推荐的),所以没关系。 2) 是的,我看到了特定地区的问题,但他应该能够轻松地将, 替换为;。我希望人们理解我的解决方案,而不仅仅是复制粘贴。
  • 当使用 =DATE(YEAR(A2),MONTH(A2),DAY(A2)) 返回 #VALUE!; =INT(A2)返回#VALUE!; =TEXT(A2;"yyyy-mm-dd") 返回 2014 年 7 月 21 日下午 12:44:36。格式单元格 A2 是通用的,当更改为日期格式时没有任何反应并且函数返回相同的错误值
  • 您错过了TEXT() 解决方案的第二部分。你试过完整的=DATEVALUE(TEXT(A2,"yyyy-mm-dd"))吗?
  • 我已经尝试了所有关于文本和数字的解决方案,它们工作正常。您是否忘记在INT()DATE() 解决方案中替换;
  • @Sashka,尝试使用适当的代码块格式化您的问题和 cmets。在问题和 cmets 中使用 ` 字符,或者如果您自己在一个块中格式化多行代码,则可以在问题中使用 4 个空格。这将帮助我们所有人。谢谢! :-)
【解决方案2】:

请尝试:

 =INT(A2)

并根据需要格式化结果。

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

如果两者都不起作用,请尝试 =INT(TRIM(A2)) 以防您有前导空格(尽管没有显示它们)。

如果还是不行,请尝试申请=CLEAN

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      简单的解决方案 - 我找到了一个非常有效的解决方案:

      =DATEVALUE(TEXT([CELL],"MM/DD/YYYY")
      

      实际上,这让我可以将任何值转换为文本,然后再转换回日期。它修复了我的 Datevalue 错误,无论原始单元格格式如何,我都可以使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多