マクロ(VBA)の書き方を教えて下さい。 複数の品番に対し、数量が記入された表があります。 その数量の合計(I列)が0ゼロのとき、その品番と数量の行を削除させたいです。
マクロ(VBA)の書き方を教えて下さい。 複数の品番に対し、数量が記入された表があります。 その数量の合計(I列)が0ゼロのとき、その品番と数量の行を削除させたいです。 イメージは添付画像の通りです。 ご教示の程お願い致します。。
Visual Basic | Excel・118閲覧・50
ベストアンサー
1個ずつ判定して行の削除をするとバタバタするのでまとめてから削除しますが 削除という処理はとても重いので数万行のデータになると時間がとてもかかります。 その場合はまとめて削除しても時間がかかるのでSortを使います。 今回はせいぜい1000行程度まで、という見込みでUnionメソッドでまとめます。 詳しくは https://www.relief.jp/docs/excel-vba-application-union-method.html が参考になると思います。 Sub Test() Dim i As Long, rng As Range, r As Range For i = 4 To Cells(Rows.Count, 2).End(xlUp).Row Step 2 If Cells(i, "I") = 0 Then Set r = Cells(i - 1, 1).Resize(2) If rng Is Nothing Then Set rng = r Set rng = Union(rng, r) End If Next If Not rng Is Nothing Then rng.EntireRow.Delete End If End Sub
1人がナイス!しています
質問者からのお礼コメント
有難う御座います。 Unionは使った事がなかったので大変勉強になりました。 また、解説のリンク先まで貼っていただき有難う御座います。
お礼日時:6/26 23:24