【发布时间】:2020-02-20 15:06:13
【问题描述】:
我有一列包含来自 Outlook 的电子邮件的日期和时间。某些日期的格式为 - January 2, 2020 4:15 PM、January-14-20 12:44 PM、December-24-19 20:15 PM。
我尝试使用 Replace 和 Substitute 函数,Replace 确实按定义工作,但从字符串中删除了时间。我想将所有日期设为2019-12-27 3:02 PM。
sub Replace()
Dim sString, searchString as String
dim i, LastCell as Long
LastCell = Range("C" & Rows.Count).End(xlUp).Row
Set searchRng = Range("C3:C" & lastCell)
For Each c In searchRng
sString = c
searchString = "-"
If InStr(1, sString, searchString, vbTextCompare) > 0 Then
i = InStr(1, sString, SearchString, vbTextCompare)
i = InStr(i + 1, sString, SearchString, vbTextCompare)
c.Offset(0, 1) = WorksheetFunction.Replace(sString, i, "19", " 2020")
End If
Next c
End Sub
【问题讨论】:
-
是“日期”、真实日期还是看起来像日期的文本字符串?如果您将单元格的数字格式更改为“常规”,日期会更改为数字还是保持不变?
-
DataString是在哪里声明的,什么时候收到值? -
它们是“常规”格式。
-
@FaneDuru 我的错!我已经编辑了代码。
-
请注意
dim i, LastCell as Long仅声明LastCell As Long但i As Variant。在 VBA 中,您需要为 每个 变量指定一个类型:Dim i As Long, LastCell as Long,否则默认为Variant。您的字符串变量也是如此。
标签: excel vba datetime replace substitution