2

我有一个有 2 列的电子表格,第一列是唯一标识符,第二列是由“|”划定的列表 分配给该案件的人员的性格。我正在尝试编写一个宏,它使用文本到列将第二列分成多列,然后将它们全部复制到原始列的底部。我正在处理大约 46,000 行,我猜结果将有大约 70,000 行。一个例子如下:

原始数据

ColumnA ColumnB  
123     Adam | Jill | Bob
456     Brent | Bob | Betsy | Sam
789     Matt | Adam | Jill

所需数据

ColumnA ColumnB 
123     Adam
456     Brent
789     Matt
123     Jill
456     Bob
789     Adam
123     Bob
456     Betsy
789     Jill
456     Sam
4

1 回答 1

2

我认为这应该做你想要的:

Sub test()
    Dim inputRng As Range
    Set inputRng = ThisWorkbook.Sheets(1).Range("A1")

    Dim outputRng As Range
    Set outputRng = ThisWorkbook.Sheets(1).Range("D1")

    While inputRng.Value <> ""
        Dim names As Variant
        names = Split(inputRng.Offset(, 1).Value, "|")

        For Each nme In names
            outputRng.Value = inputRng.Value
            outputRng.Offset(, 1).Value = Trim(nme)
            Set outputRng = outputRng.Offset(1)
        Next

        Set inputRng = inputRng.Offset(1)
    Wend
End Sub

将 inputRng 和 outputRng 调整到您想要的位置

代码所做的只是在 VBA 中拆分字符串值并遍历该列表,然后向下移动到下一行。它继续运行,直到找到一个空的 (Value == "") 单元格,然后停止。

于 2012-09-11T16:23:32.607 回答