使用 For Next 循环转换超过 500 行的日期格式
Posted
技术标签:
【中文标题】使用 For Next 循环转换超过 500 行的日期格式【英文标题】:convert a date format for over 500 rows using a For Next Loop 【发布时间】:2016-04-16 06:33:33 【问题描述】:我需要将“C”列中的日期(直到最后一行)从现有格式 24/01/2016 转换为 24.01.2016 结果必须是日期格式。
我当前的代码是:
LastRow9 = ws5.Cells(Rows.Count, "C").End(xlUp).Row
For X9 = 1 To LastRow9
searchvalue = Cells(X9, "C").Value
Answer = Split(searchvalue, "/")
ws5.Cells(X9, "A").Value = Answer
ws5.Cells(X9, "A").Value = Format(Answer, "dd.mm.yyyy")
Next X9
我得到的答案是 30.12.1899 有点离题
【问题讨论】:
我不知道您为什么不想利用 Excel 的内置函数?只需将答案作为日期传递? 又短又甜 :)ws5.Range("C1:C" & LastRow9).NumberFormat = "dd.mm.yyyy"
【参考方案1】:
尝试更改Range.NumberFormat property。
with ws5
.range(.cells(1, "C"), .Cells(Rows.Count, "C").End(xlUp)).NumberFormat = "dd.mm.yyyy"
end with
【讨论】:
++ 不错 :) 你在Rows
之前错过了一个点
我在With .Cells(1, 1).CurrentRegion
中使用.Rows.Count
如此之多,以至于我倾向于在工作表上使用Rows.Count
以保持事情井井有条。只有当您的应用程序实例同时打开了 xls 和 xlsx 样式的工作簿并且错误的工作表处于活动状态时才会有所作为,这对我来说非常罕见。
没错,这对您来说可能很少见,但我们经常选择忽略它。它可能在大多数情况下都有效,但如果您从 XL2007 运行此代码并且 ws5 是来自 XL2003 工作簿(兼容模式)的工作表,那么您将得到不正确的结果 :) 请参阅THIS 问题,了解您可能遇到的可能错误。因此我总是建议在Rows.Count
和Columns.Count
之前使用.
(DOT) :)。
代码工作正常;然而;我无法实现从 SAP 报告(SAP 格式为 26.01.2016)中查找相同日期的最终目标,因为格式不同。当我在单元格 C1 中手动输入日期为 26.01.2016 时,查找有效。另一种方法是通过公式 +1 增加日期 26.01.2016,这样我每个月都会得到连续的日历日。 Excel 的 +1 公式仅适用于 26/01/2016 格式 26.01.2016。有什么建议吗?
很抱歉,但这将是另一个问题(请参阅Russian Doll Question)。 Range.Find method 的日期可能有点棘手,但 SAP 数据可能是看起来像日期的文本(在单元格中左对齐)。我建议将 SAP 数据处理为 实际日期 并从那里开始,但没有足够的信息,也没有具体的示例数据。以上是关于使用 For Next 循环转换超过 500 行的日期格式的主要内容,如果未能解决你的问题,请参考以下文章