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

Sas*_*hka 5 excel datetime date

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))才能返回日期?

Ste*_*enH 11

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

运用 DATE()


这是我推荐的最干净的选择和方法.

=DATE(YEAR(A2),MONTH(A2),DAY(A2))
Run Code Online (Sandbox Code Playgroud)

YEAR()得到Year从单元格的值,MONTH()得到的Month值,并DAY()得到Day价值.该DATE()函数采用a Year,MonthDay值,因此通过传递它们DATE()我们可以从中获取DateA2.

运用 INT()


如果我们查看你的Datein 的数值A2,我们就会看到它41841.5309722222.number(41841.)的整个部分是日期,小数部分(.5309722222)是时间.因此,如果我们INT(A2)将此值转换为整数,我们将丢失小数部分,以便所有剩余的(41841)都是日期.所以这是我们使用的公式INT()

=INT(A2)
Run Code Online (Sandbox Code Playgroud)

同样的想法可以用ROUNDDOWN(A2,0)=FLOOR.MATH(A2)或完成=FLOOR(A2,1).

运用 DATEVALUE()


虽然第一个解决方案是最干净的,但有一种方法可以做到这一点DATEVALUE(),包括将细胞转换为Text第一个.该TEXT()函数采用值和格式字符串,因此我们格式化单元格值Text,如下所示

=TEXT(A2,"yyyy-mm-dd")
Run Code Online (Sandbox Code Playgroud)

这给了我们

2014-07-21
Run Code Online (Sandbox Code Playgroud)

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

=DATEVALUE(TEXT(A2,"yyyy-mm-dd"))
Run Code Online (Sandbox Code Playgroud)

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

使用LEFT()DATEVALUE()


基于我发现的这个Stackoverflow问题,似乎问题可能是格式不一致的结果,所以你可能会尝试这个解决方案

=DATEVALUE(LEFT(A2,FIND(" ",A2)-1))
Run Code Online (Sandbox Code Playgroud)

我在下面的截图中将此结果和其他方法包括在内.你可以通过我使用TYPE()下面的命令看到我在a number和a上测试过的值text.

结果

不同价值类型的公式结果

格式化


我假设您只想要计算日期,但如果您只想显示日期,则可以将单元格格式化为仅显示日期并忽略时间元素,尽管时间元素仍将出现在单元格中.我假设您知道这一点,但由于您没有指定,这是一个可能的解决方案.