使用 Excel 更改日期格式
Posted
技术标签:
【中文标题】使用 Excel 更改日期格式【英文标题】:Changing date formats in Excel using 【发布时间】:2016-04-16 17:01:42 【问题描述】:我有一个 Excel 表,其中一列的日期日期格式为 "yyyyMMdd"
,我想将其格式化为 "yyyy/MM/dd"
。
为此,我尝试在宏中使用以下行,但它将单元格数据转换为“###.....#”,而不是更改日期格式。
Sheet1.Range("C3", "C302").NumberFormat = "yyyy/mm/dd"
...
result = "#####...#"
...
有人能告诉我为什么会这样吗?有没有其他方法可以做到这一点?
【问题讨论】:
【参考方案1】:如果日期/时间单元格出现满 # 符号,则表示该列太窄而无法显示格式。
使列更宽以适应所选日期格式的整个宽度。
查看此屏幕截图。两列具有相同的格式。 A 列太窄,无法显示日期。 B 列足够宽。
在聊天中讨论后编辑:
您在聊天中发布的屏幕截图是这样的:
您所指的“日期”不是日期。它们是远高于 Excel 用于千禧年日期的数字。
Excel 将日期存储为整数,从 1 开始表示 1/1/1900。您在屏幕截图中显示的数字远高于 Excel 日期。
您的号码 20150930
不是 Excel 认为的 2015 年 9 月 30 日。对于 Excel,该日期将是数字 42277
,您可以将其完美地格式化为该日期。
使用格式字符串格式化的“日期”显示为 ##### 的原因是数字远高于 Excel 可以解释为日期的数字。
您需要将数字转换为真实的 Excel 日期,这可以通过一个简单的公式来完成。使用单元格 A1 中的第一个“日期”数字,您可以使用公式
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))
在此屏幕截图中返回 Excel 认为是 2015 年 9 月 30 日的真实日期的值:
所以,所有 # 符号的原因是您尝试格式化为日期的数字对于 Excel 算法中的日期来说太大了。
【讨论】:
我试图增加列的宽度。但对于所有宽度,它只显示“#####...###”。 :( 您的自定义格式字符串是什么?如果格式化字符串导致错误,# 符号将保留。 它显示“yyyy/mm/dd”/检查右键单击单元格->单元格格式->自定义。显示“yyyy/mm/dd”。但在示例子句的同一窗口中,它显示字符串“##########...##” 将示例文件发布到文件共享服务并在此处发布链接。 很好的文档【参考方案2】:请试试这个..
=LEFT(A1,4)&"/"&MID(A1,5,2)&"/"&RIGHT(A1,2)
【讨论】:
【参考方案3】:有了所有好的答案,我将添加简单的 vba 解决方案...
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
【讨论】:
以上是关于使用 Excel 更改日期格式的主要内容,如果未能解决你的问题,请参考以下文章