将7或8位数字转换为真实date

我有一个满是date格式mmddyyyy的列,我想知道如果我可以parsing或转换为mm / dd / yyyy。 我尝试select整行,然后点击格式 – >数字 – >date,但是当我这样做,一个date,如12082016成为6/7/34979这当然是没有任何意义的。 有想法该怎么解决这个吗?

编辑:

Examples: 7072016 12/11/2021 1202017 12/2/2017 10042016 10/4/2016 9212016 8/12/2023 

我将B更改为F,因为这是date列的位置。 奇怪的是,一些值是正确的

 =date(right(B2, 4), left(B2, 2), mid(B2, 3, 2)) 

你必须考虑到7和8位数字。 显然,导入数据时会丢失一些前导零。

 =date(right(right("0"&A2, 8), 4), left(right("0"&A2, 8), 2), mid(right("0"&A2, 8), 3, 2)) ' or, =--replace(replace(right("0"&A2, 8), 5, 0, "/"), 3, 0, "/") 

将单元格格式化为mm/dd/yyy或您希望的格式; 他们现在是真实的date。

在这里输入图像说明

如果您使用的是Google表格,则需要将列中的数字格式设置为00000000以确保存在完整的8位数字,包括小于10个月的前导零。为此,请使用MMDDYYYY数字然后从格式菜单中select数字然后自定义数字格式

Google表格格式菜单上的自定义数字格式选项

然后,在出现的对话框中input00000000 (八个零),然后单击应用

Google表格的自定义数字格式对话框

你的数据将被重新格式化,你的date应该是正确的:

当MMDDYYYY数字为零时,得到的日期是正确的。

希望这可以帮助!

date和时间值基本上是一系列的数字,这就是为什么它总是将其转换为date或时间,为此格式化。 Bttr使用自定义格式,或者根据需要更改默认值。 如果你想把任何数字转换成date,首先写一年中的第一个date转换成数字,得到趋势,写入nXt值,并转换成适当的格式。

使用正则expression式试试这个公式:

=TEXT(REGEXREPLACE(TEXT(A1,"00000000"),"(\d{2})+(\d{2})+(\d{4})","$1/$2/$3"),"m/d/yyyy")

m/d/yyyy更改为您需要的任何date格式。