- ベストアンサー
《エクセル》 オートフィルタで指定した行だけ指定するマクロ
いつもお世話になります。 「オートフィルタで条件を指定して行を抽出し、その行のデータを削除する」 というマクロを作成したいのですが、うまく行きません。 そのようなマクロの式か、もしくはオートフィルタを使う以外で、同じ機能を果たせるマクロがあれば、教えていただけますでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1、#2とは違ったVBAらしいコード Sub test01() Range("a1:a10").Select Selection.SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete End Sub これは編集-ジャンプ-セル選択-定数-数 編集-削除-行削除の操作に当たるものです。 エクセルの上記の操作を知っているか、注目するかどうかでやり方が変ります。 上記コード上では繰り返しを伺えるものはありません。 それだけエラーが少なくなります。 (例えば下行から削除するなどのテクニックが要らない。) 回答はいろいろあると言う実例です。 大別して (1)繰り返しプログラム系 (2)プロパティ・メソッド系(本件)
その他の回答 (3)
- papayuka
- ベストアンサー率45% (1388/3066)
他の方のアドバイスで解決しているかも知れませんが、、、 「オートフィルタで条件を指定して行を抽出し、その行のデータを削除する」 にそって書いてみました。 A列が「空白以外」でオートフィルタを掛けて、A~IとK列を消去します。 試すならテスト環境で。 Sub Test() Dim msgResult ActiveSheet.AutoFilterMode = False Range("A1").AutoFilter 'A列が空白以外なら Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:="<>" '一応消して良いか確認 msgResult = _ MsgBox("A~IとK列を消去して良いですか?", _ vbYesNo + vbCritical, "消去") If msgResult = vbYes Then Range("A2:I65536,K2:K65536"). _ SpecialCells(xlCellTypeVisible).Clear End If End Sub
お礼
ありがとうございました。 マクロ起動中に、実行の確認まで出来るとは知りませんでした。 一度チャレンジしてみます。
- snoopy64
- ベストアンサー率42% (337/793)
Dim i As Long For i = 2000 To 1 Step -1 If IsNumeric(Cells(i, 1)) Then Range("K" & i).Clear Range("A" & i & ":I" & i).Clear End If Next これでどうでしょうか。もっときれいなコードが書ければいいんですけど。。。お恥ずかしい(>_<) 頑張ってくださいヽ(^。^)ノ
お礼
とんでもございません!! ご親切にありがとうございました。 この数式で問題解決しました。
- snoopy64
- ベストアンサー率42% (337/793)
A列に社員番号、B列に氏名、C列に性別が入っていて、「男」を削除する例です。 Sub sDelLine() Dim i As Long For i = 65536 To 1 Step -1 If Cells(i, 3) = "男" Then Rows(i).Select Selection.Delete Shift:=xlUp End If Next End Sub 頑張ってくださいヽ(^。^)ノ
補足
早速ありがとうございます。 マクロ初心者の為、式に使われている単語の意味が分からないものがあり、お手数ですが3つばかり教えていただけますでしょうか。 >For i = 65536 To 1 Step -1 2000行まで行う場合は、65536を2000に変えれば良いのでしょうか? >If Cells(i, 3) = "男" 条件を、「A列の数字が入っているセル」にするにはどのように書けば良いでしょうか? >Rows(i).Select >Selection.Delete Shift:=xlUp 「この行の、A~I列と、K列のみを消す」にするにはどのように書けば良いでしょうか? ヒントさえいただければ、後は自分で何とかできるだろうとタカをくくっていたのですが・・・。 最初にこのように聞いておけば2度手間をかけずに済みましたことを深くお詫びいたします。 ご返答、お願いできますでしょうか。
お礼
ありがとうございました。 snoopy64さんの回答を参考に完成したのですが、後学のためにこちらでも作成してみます。