- ベストアンサー
エクセル指定値の行削除方法
X列の中でゼロ値の行のみ削除したい。 フィルターでゼロを選択し行削除する方法以外で簡単な方法があれば教えて下さい。 因みに10,000行を超える表の中でX列の中で0の行のみ削除したい。 マクロでも結構です。手順をお願いします。
- みんなの回答 (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 とかしてみる手でしょうか。