• ベストアンサー

エクセル 条件付き削除

excel 2007を使用してます シート中の、ある値以下のセルのみ一括して削除する方法を教えてください どうか宜しくお願いします

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

  • ベストアンサー
  • akz01
  • ベストアンサー率96% (25/26)
回答No.2

「A1~D100の範囲で、セルの値が閾値以下ならそれを削除する」ということで良いでしょうか? ========ここから======== Sub sakujo() th = 2.3 'この値以下なら削除する ini = 1 '開始行 fin = 100 '終了行 For col = 1 To 4 i = ini While i <= fin If (Cells(i, col) <> "") And (Cells(i, col) <= th) Then Cells(i, col).Select Selection.Delete Shift:=xlUp Else i = i + 1 End If Wend Next col End Sub ========ここまで======== もし「A列の値が閾値以下なら、A~D列をまとめて削除する」ということでしたら以下になります。 ========ここから======== Sub sakujo() th = 2.3 'この値以下なら削除する ini = 1 '開始行 fin = 100 '終了行 i = ini While i <= fin If (Cells(i, 1) <> "") And (Cells(i, 1) <= th) Then Range(Cells(i, 1), Cells(i, 4)).Select Selection.Delete Shift:=xlUp Else i = i + 1 End If Wend End Sub ========ここまで========

ihsasumay
質問者

お礼

「A1~D100の範囲で、セルの値が閾値以下ならそれを削除する」です ありがとうございました シート内に3000近くあるセルを取捨選択しなくてはならなかったので助かりました ご親切に答えて頂き本当に感謝しております

その他の回答 (1)

  • akz01
  • ベストアンサー率96% (25/26)
回答No.1

マクロを使うと一括削除は容易かと思います。 まずExcelからVisual Basic Editorを立ち上げ、 メニューから挿入(I)→標準モジュール(M)を選択して 出てきたウィンドウに以下を貼り付けてください。 (このあたりの操作は http://www.officepro.jp/excelvba/ に詳しく紹介されています) ========ここから======== Sub sakujo() th = 2.3 'この値以下なら削除する col = 1 '列。A列→1, B列→2,... ini = 1 '開始行 fin = 100 '終了行 i = ini While i <= fin If (Cells(i, col) <> "") And (Cells(i, col) <= th) Then Cells(i, col).Select Selection.Delete Shift:=xlUp Else i = i + 1 End If Wend End Sub ========ここまで======== このあと、Excelのメニューからマクロを選ぶと、一覧にマクロ名 sakujoがあるはずなので、選択して実行してください。 なお、上の例では範囲A1~A100に関して、値が2.3以下のセルを削除します。 削除の閾値は2行目のthで指定します。 例えば10.5以下を削除したいなら th=10.5 に書き換えてください。 範囲の指定はcol、ini、finです。 例えば範囲B1~B50でやりたい場合は、3行目と5行目をそれぞれ col=2 fin=50 に書き換えてください。 説明が下手ですみません。

ihsasumay
質問者

お礼

ありがとうございます VBAは全くの素人ですので原形を作っていただき非常に助かりました。 参考にして自分で作ってみます

ihsasumay
質問者

補足

もしよろしければ、AからDまでの、全ての1から100までを選択するといった場合のものを教えて頂けないでしょうか?

関連するQ&A

専門家に質問してみよう