2016-04-27 97 views
3

我有以下文本到日期转换的工作公式。但是,我不明白为什么必须添加尾部0以便以YYYY格式显示年份。Excel:文本字符串日期转换

2016年4月21日转换为2016年4月21日

=(MID(A2,4,2)&"/"&LEFT(A2,2)&"/"&RIGHT(A2,2))+0 

这是非常简单和直接的。但是如果你在公式结尾删除0,它将只显示16而不是2016.但是我可以做Right(A2,4)而不是Right(A2,2)。但我仍然想知道为什么?任何人?谢谢!

+0

想知道如何是你能找到它,加入零会工作! ;) – SrinivasR

+0

事实是,这段代码不是来自我的。我在网上看到了它。我只是不明白其背后的原因。 – lulumink

+2

添加一个零使Excel将一个字符串转换为一个数字,正确的格式使Excel将数字显示为一个日期。 –

回答

6

尾随零将整个事物变成一个数学运算,它将字符串(+0左边的所有内容)视为一个数字。

你也可以使用* 1 + 0而不是

=(MID(A2,4,2)&"/"&LEFT(A2,2)&"/"&RIGHT(A2,2))*1 

,或者你可以滴+ 0,并在前面加 - 前(应该都做同样的

=--(MID(A2,4,2)&"/"&LEFT(A2,2)&"/"&RIGHT(A2,2)) 
+0

现在,它变得清晰!非常感谢!如果我们在公式中添加数学运算符,则Excel会将其视为数字而不是其他任何数字。说得通! – lulumink

5

爱德已经回答正确,这是因为它是治疗你的日期字符串为一个数字。

但是,Excel有权解释的字符串来得到它真的是,要做到这一点,依靠什么号码区域设置。 在美国的区域设置下,您的公式非常适用,但是当我将其插入到英国区域设置的Excel中时,我会得到#Value,因为“04/21/16”不是英国的有效日期或数字。

为了避免这个问题,您应该使用DATE()函数将其转换为日期,该函数可以与您的区域设置无关地工作。

=DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2)) 
+0

感谢菲尔的替代解决方案!作品也像魅力! – lulumink

+0

这是更好的答案,避免依靠本地设置来消除日期 –

+0

同意这是更好的方式来转换日期,完全支持这个作为答案(读upvote)以获取从一个字符串日期到一个excel的日期价值......但从技术上来说,这个问题本质上是“这个+0在做什么?”但那可能是分裂的头发。 –