在Excel中使用更改date格式

我有一个excel工作表,其中一列的datedate格式为"yyyyMMdd" ,我想将其格式化为"yyyy/MM/dd"

为此,我试图在macros内使用下面的代码行,但它将单元格数据转换为“### …..#”而不是更改date格式。

 Sheet1.Range("C3", "C302").NumberFormat = "yyyy/mm/dd" ... result = "#####...#" ... 

有人可以告诉我为什么发生? 有没有其他办法做到这一点?

随着所有的好答案,我会添加简单的VBA解决scheme…

 Option Explicit Sub FormatDate() Dim xlRng As Range Dim xlShtRng As Range '//- Date format 20160112 Set xlShtRng = [A3:A10] '//- or [A3, A6, A10] For Each xlRng In xlShtRng xlRng.Value = DateSerial(Left(xlRng.Value, 4), Mid(xlRng.Value, 5, 2), Right(xlRng.Value, 2)) xlRng.NumberFormat = "yyyy/mm/dd" '//- 2016/01/12 Next End Sub 

如果date/时间单元格出现#符号,则意味着该列太窄而无法显示格式。

使列变宽以适应所选date格式的全部宽度。

看这个截图。 两列具有相同的格式。 A列太窄,无法显示date。 B栏足够宽。

在这里输入图像说明

在聊天讨论后编辑:

你在聊天中发布的屏幕截图是这样的: 在这里输入图像说明

你所指的“date”不是date。 它们的数字远高于Excel在这个千年中用于date的数字。

Excel将date存储为整数,从1/1/1900开始。 你在屏幕截图中显示的数字比Exceldate高。

在这里输入图像说明

您的号码20150930不是Excel 2015年9月30日认为的。 对于Excel,该date将是数字42277 ,您可以完美格式化为该date。

之所以用你的格式string来格式化你的“date”是因为#####是数字比Excel能解释为date的方式要高。

您将需要将您的数字转换为真正的Exceldate,您可以使用一个简单的公式来完成。 用单元格A1中的第一个“date”编号,可以使用公式

 =DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)) 

在此屏幕快照中返回Excel视为2015年9月30日的真实date的值:

在这里输入图像说明

所以,所有#符号的原因是你想要格式化为date的数字对于Excelalgorithm中的date来说太大了。

请试试这个..

 =LEFT(A1,4)&"/"&MID(A1,5,2)&"/"&RIGHT(A1,2)