【发布时间】:2019-01-22 19:33:56
【问题描述】:
我将日期存储在字符串中,有时采用“2018 年 11 月”的形式,有时采用“2018 年 11 月 1 日”的形式。我想将它们普遍更改为“2018 年 11 月”。只是月份和日期。
我写了以下函数。
Function FnDateExtract(fnFile, fnTab, fnRow, fnColumn)
Dim RawExtract As String
With Workbooks(fnFile).Worksheets(fnTab)
RawExtract = .Cells(fnRow, fnColumn).Text
FnDateExtract = Format(RawExtract, "mmm yyyy")
End With
End Function
我一直遇到这个问题,该函数会读取字符串“11/1/2018”和“Nov-2018”并返回结果“2019 年 11 月”。我不知道为什么是 2019 年(但问题从 2019 年 1 月 1 日起才出现。真奇怪。)
问题: 作为临时解决方案,有没有办法将年份返回负1?类似于 FnDateExtract = Format(RawExtract, "mmm yyyy - 1")?
如果你能帮我解决为什么函数总是误读字符串正好 1 年的问题,那也会有很大帮助。谢谢!
编辑 下面的 RonRosenfeld 建议该函数仅提取当前年份。我做了一些测试,似乎它也会将 2017 年提取为 2019 年。不知道为什么会这样。仍在寻找解决方案。
【问题讨论】:
-
日期、实际日期或看起来像日期的文本吗?
-
您确定您指向的是正确的工作表和工作簿吗?
-
我无法复制您的问题。尽管日期的格式,它仍然适用于我。正如@ScottCraner 所说,您确定要指向预期的工作表和工作簿吗?
-
我们无能为力。如上所述,我们无法复制该问题。
-
问题是你试图
Format一个字符串。您可能总是会在输出中获得当前年份。尝试更改为:Dim RawExtract As Date