ExcelのAutoFilterの抽出条件には、配列が指定できる・・・でも、ちょっと注意しないといけない事もある
AutoFilterの抽出条件に配列が使用できるとの事で、試してみた際にハマったので・・・
こんなデータを用意。
まずは、1件抽出するコード。こんな感じ?
Public Sub doAutoFilter() Dim r As Range Set r = ThisWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion r.AutoFilter Field:=1, Criteria1:=3 End Sub
実行してみる。
3が抽出されている。問題ない。
では、3件抽出してみる。
Public Sub doAutoFilter2() Dim r As Range Set r = ThisWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion r.AutoFilter Field:=1, Criteria1:=Array(2, 4, 6), Operator:=xlFilterValues End Sub
実行。
?1件も抽出されない。
「マクロの記録」で同じことをやってみる。
Sub Macro1() ' ' Macro1 Macro ' ' Range("A1:A21").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$A$21").AutoFilter Field:=1, Criteria1:=Array("2", _ "4", "6"), Operator:=xlFilterValues End Sub
???抽出するデータが数値なのに、Arrayの中身が文字列になっている!!!
じゃあ、こう?
Public Sub doAutoFilter2() Dim r As Range Set r = ThisWorkbook.Worksheets("Sheet1").Range("A1").CurrentRegion ' r.AutoFilter Field:=1, Criteria1:=Array(2, 4, 6), Operator:=xlFilterValues r.AutoFilter Field:=1, Criteria1:=Array("2", "4", "6"), Operator:=xlFilterValues End Sub
大丈夫そう。
セルのデータの型に関係なく、Arrayの中身は、文字列でないと駄目らしい・・・
ということは、セルの書式が変わると抽出されないのでは?
セルの表示を小数第1位まで表示させたら・・・
やっぱり抽出されません。 orz
勘弁して下さい・・・
やっぱり日付でも・・・