Changing date formats in Excel using
我有一个Excel工作表,其中一列的日期格式为
为此,我尝试在宏内部使用以下行,但是它将单元格数据转换为" ### .....#",而不是更改日期格式。
1 2 3 4 | Sheet1.Range("C3","C302").NumberFormat ="yyyy/mm/dd" ... result ="#####...#" ... |
有人可以告诉我为什么会这样吗? 还有其他方法吗?
如果日期/时间单元格显示为充满#号,则表示该列太窄而无法显示格式。
使列变宽以适应所选日期格式的整个宽度。
查看此屏幕截图。这两列具有相同的格式。 A栏太狭窄,无法显示日期。 B列足够宽。
在聊天中讨论后进行编辑:
您在聊天中发布的屏幕截图是:
您所指的"日期"不是日期。这些数字远远高于Excel在此千年中用于日期的数字。
Excel将日期存储为整数,从1/1/1900的1开始。屏幕快照中显示的数字远高于Excel日期。
您的电话号码
用格式字符串格式化的"日期"显示为#####的原因是数字远高于Excel可以解释为日期的数字。
您将需要将数字转换为真实的Excel日期,您可以使用简单的公式进行转换。在A1单元格中使用第一个"日期"数字时,您可以使用以下公式
1 | =DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)) |
返回此屏幕快照中Excel视为2015年9月30日的真实日期的值:
因此,所有#号的原因是您试图格式化为日期的数字对于Excel算法中的日期而言太大。
有了所有好的答案,我将添加简单的vba解决方案...
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
请尝试这个。
1 | =LEFT(A1,4)&"/"&MID(A1,5,2)&"/"&RIGHT(A1,2) |