我有一个包含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
答案 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 ==“”)单元格然后停止。