- ベストアンサー
Excelのマクロで行を間引きたい
3万行以上ある時系列データのデータ量を減らすため、マクロを使って3行目以降から5行毎に間引きたいのですが、 どうすれば良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>3行目以降、5行分を間引きたかったんです。 >つまり残したい行は1行目、2行目、8行目、14行目、20行目・・・となります。 ということであれば、 Sub test() Application.ScreenUpdating = False i = 3 '3行目の意味 mydata = Cells(i, 1) 'A列でデータが存在するか判定 Do Until mydata = "" '空白になるまで繰り返し処理 Rows(i).Resize(5).Delete '5行の削除 i = i + 1 mydata = Cells(i, 1) Loop Application.ScreenUpdating = True End Sub としてみてはどうでしょうか。
その他の回答 (2)
- taka_s777
- ベストアンサー率57% (8/14)
Do ~ Loopを使ったほうがよさそうですね。 以下の例ではA列でデータがあるかどうかを判定し、A列にデータが存在 する限り、行を削除していきます。 例では3行目、8行目、13行目…となります。 Sub test() Application.ScreenUpdating = False i = 3 '3行目の意味 mydata = Cells(i, 1) 'A列でデータが存在するか判定 Do Until mydata = "" '空白になるまで繰り返し処理 Rows(i).Delete '行の削除 i = i + 5 '5行毎の意味。8、13、18行目…となる。 mydata = Cells(i, 1) Loop Application.ScreenUpdating = True End Sub
- he12345678
- ベストアンサー率32% (58/177)
はじめまして。 マクロじゃなくて、VBでやったほうがいいと思います。 大体のところ、 1.データの入っているセルを参照し、データが何行あるか拾い出す 2.for~next等をつかって、セル行を飛び石で削除するループを作る。(ループ回数は拾い出した行数) こんな感じならうまくいくと思います。
お礼
ありがとうございました。
補足
回答ありがとうございます。 質問の仕方が間違っておりました。申し訳ありません。 3行目以降、5行分を間引きたかったんです。 つまり残したい行は1行目、2行目、8行目、14行目、20行目・・・となります。 よろしくお願いします。