我遇到了一个奇怪的问题,我根本无法理解。我有一个.csv文件,其中包含4列日期。作为日常任务,我必须使用这些日期并使用Excel的TextToColumn选项将它们转换为DMY格式。日期的原始格式为MDY - 由于我不明白何时手动完成数据>文本到列>固定宽度>日期:MDY这些日期转换为正确的DMY格式。
以下是.csv文件中原始数据的屏幕截图:
现在我想通过一个简单的宏来自动化它,在将文本记录到列操作并进行一些调整以跨越所有4列之后,我得到了以下代码:
Sub Text_To_Column()
'
' Select_Column_Get_Length Macro
'
Worksheets("Outcome extract").Activate
Dim l As range
Set l = range("A2", range("A2").End(xlDown))
Dim h As Long
h = l.Count
Dim daterange As range
Dim firstcell As range
Set firstcell = range("FG2")
Set daterange = range(firstcell, firstcell.Offset(0, 3))
For Each n In daterange
Dim dates As range
Set dates = range(n, n.Offset(h, 0))
dates.Select
Selection.TextToColumns Destination:=n, DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 3)
Next n
End Sub
代码当前计算条目的数量,并在那么多日期对列操作执行文本(为了不操作我认为会减慢它的所有单元格?)。无论哪种方式,宏都会为手动操作提供不同的结果,即使文本到列的所有参数都是从录制中获取的。
出于某种原因,最初与右边对齐的条目在手动完成时会交换MM和DD,而不是宏。
任何关于我出错的提示都会非常感激!
P.S。我知道我应该避免选择单元格并使用范围,一旦我知道这种方法有效,我会解决这个问题。