Excel:文本stringdate转换

我有一个工作公式以下文本到date转换。 不过,我不明白为什么必须添加尾部0以便以YYYY格式显示年份。

21.04.2016转换为2016年4月21日

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

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

尾随零将整个事物转换为一个math运算,导致string(+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)) 

正如埃德已经正确回答,这是因为它是把你的datestring作为一个数字。

但是,Excel必须解释string才能得到真正的数字,并且依靠区域设置来执行此操作。 在美国的区域设置下,您的公式很有用,但是当我将其插入到英国区域设置的excel中时,我会得到#Value,因为“04/21/16”在英国不是有效date或数字。

为了避免这个问题,你应该使用DATE()函数将其转换为date,这将工作,不pipe你的区域设置。

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