- 締切済み
vbaでシートより100より大きい値を削除するコードを教えてください
vba初心者です。 値の羅列のシートでセルの値が100より大きいセルはのある行は削除したい時どのようなコードを書けばわからず苦慮してます。 例として下記のようなシートの場合どうかきますでしょうか? A B C D E F ---------------------------------------- 1 20090101 20 30 95 40 ---------------------------------------- 2 20090102 25 35 105 45 ---------------------------------------- 3 20090103 40 50 110 50
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- myRange
- ベストアンサー率71% (339/472)
データが提示されてるのはいいんですが、 どの列を基準にするのか、例えば、E列とか C列~F列のどこかが、とかを説明しないと 的確な回答はできません。 で、C列~F列のどこかに、100以上があったら、とした場合。 但し、1行目は見出しとする '-------------------------------------- Sub Test() Dim R As Long For R = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(Cells(R, "C").Resize(1, 4), ">100") > 0 Then Rows(R).Delete xlShiftUp End If Next R End Sub '--------------------------------------------- 以上ここまで。
- hiro_266
- ベストアンサー率0% (0/0)
質問の確認になりますが、 ・2列目(B列は)削除の対象ではない(日付だから)。 ・それ以外の値は、100以上を確認する数値。 でよろしいでしょうか??
- n-jun
- ベストアンサー率33% (959/2873)
抽出する条件がD列と仮定してますが、 Sub try() Application.DisplayAlerts = False With Worksheets("Sheet1") .Range("A1").AutoFilter 4, ">100" .Range("A2", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeVisible).Delete .AutoFilterMode = False End With Application.DisplayAlerts = True End Sub こんな感じの事でしょうか。
補足
D列目の最大行より下から上向きに100より大きい値のあるセルを削除 するというよう感じのコードでしょうか? 何点か質問があります。 (1).Range("A1").AutoFilter 4, ">100"でA1とする 理由がわかりません。(range関数の意味も含め分かりません。) (2)このコードでマクロを実行しようとすると .Range("A1").AutoFilter 4, ">100"で構文エラーとなり実行できま せん。
お礼
回答遅くなり申し訳ありません。 ・2列目(B列は)削除の対象ではない(日付だから)。→そのとおりです。 それ以外の値は、100以上を確認する数値。→そのとおりです