- ベストアンサー
ExcelマクロでFALSEの行を削除する方法
- Excelのデータベースから抽出したデータでフラグがFALSEの行を削除する方法を紹介します。
- マクロ1では、C列のNULLのセルを一時的にTRUEに置換します。
- マクロ2では、C列で並び替えてTRUEの行を別のシートにコピーします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
フィルターでFaise を抽出して削除するのが手っ取り早いです。 Option Explicit ' Sub Macro1() Dim REnd As Long ' ActiveSheet.AutoFilterMode = False REnd = Cells(Rows.Count, "A").End(xlUp).Row Range("A1:C" & REnd).AutoFilter 3, "False" Range("2:" & REnd).Delete ActiveSheet.AutoFilterMode = False End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
少数例でテスト。やってみてください。 質問例のデータの一部をSheet1に作成。下記のC列の中で適当にFALSE行を増やす。 先頭行に見出しを入れる(下記AA,BB,CC。フィルタ―用に必要)。 AA BB CC A0001 1code1 TRUE A0001 2code1 TRUE A0001 2code1 FALSE A0001 3code1 TRUE A0001 4code1 A0001 5code1 TRUE A0001 6code1 TRUE A0001 7code1 TRUE A0001 8code1 TRUE A0001 9code1 TRUE A0001 10code1 TRUE A0001 11code1 TRUE A0001 12code1 TRUE A0002 1code2 TRUE A0002 2code2 TRUE A0002 3code2 TRUE A0002 4code2 TRUE A0002 5code2 TRUE A0002 6code2 TRUE A0002 7code2 TRUE A0002 8code2 TRUE A0003 1code3 TRUE A0003 2code3 TRUE A0003 3code3 TRUE A0003 3code3 FALSE で、Sheet2にコピーする。安全策のため。 ーー 標準モジュールに Sub test01() Worksheets("Sheet1").Range("a1").CurrentRegion.Copy Worksheets("Sheet2").Range("a1") End Sub ==以下が本番 Sub test02() Worksheets("Sheet2").Range("a1").CurrentRegion.Select Range("A1:C26").AutoFilter Field:=3, Criteria1:="FALSE", Operator:=xlFilterValues ActiveWindow.VisibleRange.Cells.Delete End Sub ーー 今く行けば簡潔なコードなんだが。 >Criteria1:="FALSE", Operator:=xlFilterValuesの辺りで、実データと違い、うまく行かないかも。質問にそのあたりの記述がないため、そうした。うまく行かない場合は、すみません。
お礼
回答ありがとうございます。 なるほどでした。
お礼
回答ありがとうございます。 なるほどでした。 助かりました。(^^)/