使用 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.CountColumns.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 行的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

如何减少运行(for循环),Python

要从For…Next循环中退出循环,应使用啥语句。

Python'for'循环性能太慢

当有大量数据[超过一百万行] [重复]时,改进 R 中的循环以提高时间效率

c# - 使用 for 循环打印相关行的二维数组

R使用if next break in for循环出错