Excel 複数行のデータを1行にするVBA
Sheet1にA列~T列まで不規則にデータが存在する
行が500行有ります
(1) これを1行にする(VBA)
(Sheet2に表示)
(2) 1列にして(行列入れ替え)
(3) 空白以外を表示する(オートフィルタ)
を試みましましたが
上手くいきません
特に(1)のマクロが途中で止まります
おそらくデータが多すぎるのだと思います
何とか良い方法が無いかと色々試しますが・・・
その道のプロフェッショナルな方
手を差しのべて頂けないでしょうか?
このような感じでやっています
Dim ss As Worksheet
Dim ds As Worksheet
Dim r As Integer
Set ss = Sheets("sheet1")
Set ds = Sheets("sheet2")
ds.Cells.Clear
For r = 1 To 1000
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 1) = ss.Cells(r, 1)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 2) = ss.Cells(r, 2)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 3) = ss.Cells(r, 3)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 4) = ss.Cells(r, 4)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 5) = ss.Cells(r, 5)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 6) = ss.Cells(r, 6)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 7) = ss.Cells(r, 7)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 8) = ss.Cells(r, 8)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 9) = ss.Cells(r, 9)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 10) = ss.Cells(r, 10)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 11) = ss.Cells(r, 11)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 12) = ss.Cells(r, 12)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 13) = ss.Cells(r, 13)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 14) = ss.Cells(r, 14)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 15) = ss.Cells(r, 15)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 16) = ss.Cells(r, 16)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 17) = ss.Cells(r, 17)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 18) = ss.Cells(r, 18)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 19) = ss.Cells(r, 19)
ds.Cells(((r - 1) \ 20) + 1, ((r - 1) Mod 20) * 20 + 20) = ss.Cells(r, 20)
Next
お礼
ありがとうございます。 Forを2つ作れば良いんですね・・・勉強不足です。 どうもありがとうございました。