牛、豚、鶏、どれか一つ食べられなくなるとしたら?

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

A 回答 (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
としてみてはどうでしょうか。
    • good
    • 0

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

この回答への補足

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

補足日時:2008/03/03 15:24
    • good
    • 0

はじめまして。



マクロじゃなくて、VBでやったほうがいいと思います。

大体のところ、
1.データの入っているセルを参照し、データが何行あるか拾い出す
2.for~next等をつかって、セル行を飛び石で削除するループを作る。(ループ回数は拾い出した行数)

こんな感じならうまくいくと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/03 15:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報