2

2 つの列を持つスプレッドシートがあります。1 つ目は一意の識別子で、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 に答える