将一列中的数据转换为两列

时间:2015-07-12 02:15:01

标签: excel vba excel-vba multiple-columns

我的数据显示为here

数据仅排列在一列。每个唯一ID通常具有两组数据(可能缺少一个或两个数据集),并且每个条目由波浪号(例如~)字符分隔。工作表还显示了所需的输出。

是否有可用于获得所需输出的VB代码或工作表公式?主要文件大约有132,300行。我没有想出一个逻辑。

1 个答案:

答案 0 :(得分:0)

这应该可以非常快速地处理您的数据。

Sub foo_on_doo_too()
    Dim v As Long, vDOOs As Variant, vRSLTs As Variant

    With ActiveSheet   '<- set this worksheet reference properly!
        vDOOs = .Range(.Cells(4, 1), .Cells(Rows.Count, 1).End(xlUp)).Value2
        ReDim vRSLTs(1 To 2, 1 To Int(UBound(vDOOs, 1) / 4))

        For v = LBound(vDOOs, 1) To UBound(vDOOs, 1) Step 4
            vRSLTs(1, Int(v / 4) + 1) = vDOOs(v, 1)
            vRSLTs(2, Int(v / 4) + 1) = vDOOs(v + 2, 1)
        Next v

        .Cells(4, 3).Resize(UBound(vRSLTs, 2), 2) = _
            Application.Transpose(vRSLTs)
    End With
End Sub

建议您将ActiveSheet引用设置为明确的内容,例如Sheets("Sheet1")