Excel:将行号存储在变量中

时间:2012-09-11 16:09:21

标签: excel vba

我有一个包含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

1 个答案:

答案 0 :(得分: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 ==“”)单元格然后停止。