复制粘贴后转换为excel中的数字错误

时间:2016-02-28 09:23:55

标签: excel excel-vba macros vba

我从SAP的导出文件中复制并粘贴后面临问题它要求转换为数字选项,这就像错误而不转换为数字公式不起作用。单元格值也只是数字。

我尝试制作宏但它仅适用于单列。如何使它在多个列上一起工作并使其更快,因为它长时间坚持下去。

转换为数字的代码

Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

Columns("F:F").Select
    Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

Columns("G:G").Select
    Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

如何缩短代码并在单行中合并多列。

1 个答案:

答案 0 :(得分:1)

Range.TextToColumns method中使用 xlFixedWidth

Dim c As Long, vCOLs As Variant
vCOLs = Array(1, 6, 7)  'columns A, F and G

With Worksheets("Sheet1")
    For c = LBound(vCOLs) To UBound(vCOLs)
        With .Column(c)
            .TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, _
                           FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
        End With
    Next c
End With

变体数组允许您快速指定要处理的列。即使行数很大(~250K),这也应该很快循环。