我有一个日期范围,我需要每个月将其转换为'MM/DD/YYYY格式(但作为文本)。
我曾经使用这个公式手动转换这些=TEXT(Cell Ref.,"MM/DD/YYYY")
。见上图。我最近开始使用下面的 VBA 代码来节省我的时间(大约有 18 列,每个月有 200K 行的数据)。
Sub MM_DD_YYYY()
Application.ScreenUpdating = False
Dim rng As Range
Selection.NumberFormat = "0"
For Each rng In Selection
rng.Value = "+text(" & rng.Value & ",""MM/DD/YYYY"")"
Next rng
Selection.TextToColumns DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
如果我选择一列,此代码可以正常工作,但如果我选择多列则失败,因为它有文本到列元素(显然一次只适用于一列)。选择整个范围后是否可以一次运行一列代码而不破坏它?
顺便说一句,我尝试了以下文本到列的替代方案:
- 模拟 F2+Enter。这有效,但需要很多时间。
For Each rng In Selection
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next
- 由于某种原因不起作用。
Selection.Value = Selection.FormulaR1C1
- 由于某种原因不起作用。
For Each rng In Selection
Selection.Value = Selection.Value
Next rng
我非常感谢您的帮助或建议。谢谢。