手动完成和宏完成时,VBA TextToColumns的行为有所不同

时间:2017-05-05 12:34:40

标签: excel vba

我遇到了一个奇怪的问题,我根本无法理解。我有一个.csv文件,其中包含4列日期。作为日常任务,我必须使用这些日期并使用Excel的TextToColumn选项将它们转换为DMY格式。日期的原始格式为MDY - 由于我不明白何时手动完成数据>文本到列>固定宽度>日期:MDY这些日期转换为正确的DMY格式。

以下是.csv文件中原始数据的屏幕截图:

原始数据

Raw data

现在我想通过一个简单的宏来自动化它,在将文本记录到列操作并进行一些调整以跨越所有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。我知道我应该避免选择单元格并使用范围,一旦我知道这种方法有效,我会解决这个问题。

0 个答案:

没有答案