• ベストアンサー

Excelのマクロで行を間引きたい

3万行以上ある時系列データのデータ量を減らすため、マクロを使って3行目以降から5行毎に間引きたいのですが、    どうすれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_s777
  • ベストアンサー率57% (8/14)
回答No.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)
回答No.2

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

chinchirapoppo
質問者

補足

回答ありがとうございます。 質問の仕方が間違っておりました。申し訳ありません。 3行目以降、5行分を間引きたかったんです。 つまり残したい行は1行目、2行目、8行目、14行目、20行目・・・となります。 よろしくお願いします。

回答No.1

はじめまして。 マクロじゃなくて、VBでやったほうがいいと思います。 大体のところ、 1.データの入っているセルを参照し、データが何行あるか拾い出す 2.for~next等をつかって、セル行を飛び石で削除するループを作る。(ループ回数は拾い出した行数) こんな感じならうまくいくと思います。

chinchirapoppo
質問者

お礼

ありがとうございました。

関連するQ&A