• ベストアンサー

エクセル指定値の行削除方法

X列の中でゼロ値の行のみ削除したい。 フィルターでゼロを選択し行削除する方法以外で簡単な方法があれば教えて下さい。 因みに10,000行を超える表の中でX列の中で0の行のみ削除したい。 マクロでも結構です。手順をお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  if application.countif(range("X:X"), 0) = 0 then exit sub  application.screenupdating = false  application.calculation = xlcalculationmanual  activesheet.autofiltermode = false  range("X:X").autofilter field:=1, criteria1:="=0"  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  activesheet.autofiltermode = false  application.calculation = xlcalculationautomatic  application.screenupdating = true end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押し、マクロを実行する。 #補足 >フィルターでゼロを選択し行削除する方法以外で簡単な方法 なぜそれじゃダメなのかの理由が不明ですが、通常はオートフィルタで絞って削除してしまうのが最も簡単でかつ高速な方法です。 1万行ものリストを逐一調べて削除していくようなちんたらしたやり方はとてもお勧めできませんし、あとはまぁ sub macro2()  if application.countif(range("X:X"), 0) = 0 then exit sub  range("Y:Y").insert shift:=xlshifttoright  range("Y1:Y" & cells(rows.count, "X").end(xlup).row).formula = "=IF(AND(X1<>"""",X1=0),0,1)"  range("Y1").currentregion.sort key1:=range("Y1"), order1:=xlascending, header:=xlno  range(range("Y1"), range("Y:Y").find(what:=0,lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious)).entirerow.delete shift:=xlshiftup  range("Y:Y").delete shift:=xlshifttoleft end sub とかしてみる手でしょうか。