Excel:将行号存储在variables中

我有一个电子表格有2列,第一个是一个唯一的标识符,第二个是由'|'划定的清单。 被分配到这个案件的人的性格。 我正在尝试编写一个使用文本到列的macros来将第二列分成多个列,然后使用相应的标识符将它们全部复制到原始列的底部。 我正在处理约46,000行,结果将有大约7万我猜测。 一个例子如下:

原始数据

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 

我认为这应该做你想做的事情:

 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中分割string值并遍历该列表,然后向下移动到下一行。 它继续前进,直到find一个空的(Value ==“”)单元格然后停止。