これは私が2列のデータに対して持っている答えです。しかし、私は3つの列のためにそれをしたい、誰かがここで私を助けることができますか?
セルループではなくバリアント配列を使用するほうが良いです。データセットが意味をなされたら、はるかにコードワイズです。あなたのコードはもっと長くなります:)
このサンプルは、元のデータを見ることができるように、CとDの列にダンプします。変更する[c1] .Resize(lngCnt、2).Value2 = Application.Transpose(Y)to [a1] .Resize(lngCnt、2).Value2 = Application.Transpose(Y)を元のデータに上書きする
[後でブランクを削除するためにregexpで更新されました。つまり、 "band"が "band"になります] Sub SliceNDice() Dim objRegex As Object Dim X Dim Y Dim lngRow As Long Dim lngCnt As Long Dim tempArr() As String Dim strArr Set objRegex = CreateObject("vbscript.regexp") objRegex.Pattern = "^\s+(.+?)$" 'Define the range to be analysed X = Range([a1], Cells(Rows.Count, "b").End(xlUp)).Value2 Redim Y(1 To 2, 1 To 1000) For lngRow = 1 To UBound(X, 1) 'Split each string by "," tempArr = Split(X(lngRow, 2), ",") For Each strArr In tempArr lngCnt = lngCnt + 1 'Add another 1000 records to resorted array every 1000 records If lngCnt Mod 1000 = 0 Then Redim Preserve Y(1 To 2, 1 To lngCnt + 1000) Y(1, lngCnt) = X(lngRow, 1) Y(2, lngCnt) = objRegex.Replace(strArr, "$1") Next Next lngRow
'C:D [c1] .Resize(lngCnt、2).Value2 = Application .Transpose(Y) End Sub
こんにちは、歓迎StackOverflow。ヘルプページ、特に[ここではどのトピックについて聞かせていただけますか?](http://stackoverflow.com/help/on-topic)と[質問しないでください。」](http://stackoverflow.com/help/dont-ask)。さらに重要なことは、[Stack Overflow question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。 [MCVE](http://stackoverflow.com/help/mcve)についても知りたいことがあります。そして、あなたが作業しようとしているコードを含めて...人々が助けることができるようにします。 – Rdster