[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA フィルター抽出 データがない場合』(いち)
ワークシートに下記のようなデータがあるとします。フィルターでB列の200以下の物を抽出し、行削除をしたいのですが、200以下の物がない場合のエラー回避方法を教えてください。On Error Resume Nextを抽出前に入れると1行目の項目行が削除されてしまいます。
A B 1 項目 個数 2 ミカン 250 3 ナシ 550 4 リンゴ 600 5
sub test()
With Worksheets
.AutoFilterMode = False
'B列が200以下のものを抽出して、行を削除
.Range("A1").AutoFilter Field:=2, Criteria1:="<=200", Operator:=xlAnd
.Range("2:" & .Cells(.Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
If .AutoFilterMode Then .ShowAllData
.Range("A1").AutoFilter Field:=1, Criteria1:="リンゴ", Operator:=xlAnd
.Range("A1").CurrentRegion.Copy Sheets("集計")
sheets("集計").EntireRow.Delete
End sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
私なら、元データを触りたくない(削除したくない)ので
(1)B列の200以下の物"以外"を抽出 (2)新規シートを追加して、(1)のデータを貼付
とします。
(もこな2) 2018/09/11(火) 15:53
(いち) 2018/09/11(火) 16:06
(もこな2) 2018/09/11(火) 17:32
.Range("A1").AutoFilter Field:=2, Criteria1:="<=200", Operator:=xlAnd
の下に
If WorksheetFunction.Subtotal(3, .Range("A:A")) < 2 Then MsgBox "200以下のデータがありません" Exit Sub End If
を入れればOKじゃないですか?
(TAKA) 2018/09/11(火) 18:44
(いち) 2018/09/12(水) 14:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.