【发布时间】:2014-09-26 07:54:44
【问题描述】:
尝试格式化工作簿中的 2 列时,宏的执行速度非常慢。要格式化大约 4000 行,需要 10 多分钟。
日期是从将它们存储为字符串的外部源填充的。
注释代码时,它会在 60 秒内加载。
代码
'Discover last row of data
RowsToProcess = Range("A" & Rows.Count).End(xlUp).Row
For i = 6 To RowsToProcess
Worksheets("Data").Range("B" & i).Select
Selection.NumberFormat = "dd/mm/yy;;"
Selection.Value = CDate(Selection.Value)
Worksheets("Data").Range("C" & i).Select
Selection.NumberFormat = "dd/mm/yy;;"
Selection.Value = CDate(Selection.Value)
Next i
下面的代码也没有按要求的格式格式化单元格。
Worksheets("Data).Columns("C").NumberFormat = dd/mm/yy;;"
【问题讨论】:
-
日期最初作为字符串加载到 col B 和 col C 时会是什么样子? “dd/mm/yy;;”,比如“03/08/14;;”?
-
@Dan Wagner - 它们以多种格式加载,例如2014 年 3 月 8 日,2014 年 7 月 3 日,2014 年 5 月 6 日(月/日/年)。
-
酷——感谢您的澄清。另一个问题哈哈。您如何确保 mm/dd 与 dd/mm 之间的正确处理?例如,考虑
05/06/2014,如上所述。您怎么知道该日期是 2014 年 5 月 6 日还是 2014 年 6 月 5 日? -
我猜测 dd/mm 格式的日期是不可能在美国语言环境中表示的日期,例如:2013 年 12 月 31 日等。这些将提供一些线索,表明数据的来源使用了另一个区域设置,并且应该假设 所有 日期相同的出处日期,即使它们 似乎 是正确的美国格式的日期,例如 01/02/2013(可能是 2 月 1 日,不是 1 月 2 日)。