オートフィルタ(日付による抽出)AutoFilter メソッド
日付で、抽出する(AutoFilter メソッド)
object.AutoFilter ( [ field, criteria1, operator, criteria2 ] )
引数・戻り値
- object ・・・ 対象となる Range オブジェクトを指定します。
- field ・・・ フィルターの対象となるフィールド番号を整数で指定します。対象となる範囲の最も左側の列(フィールド)が、フィールド番号 1 になります。
複数の列(フィールド)をまとめて扱いたい場合は、配列を指定することも可能です。
(例)field := Array(1,3,6) - criteria1 ・・・ 日付を指定します。
- criteria2 ・・・ 複数(2日)の日付を指定したり、特定の期間を指定する場合にのみ日付を指定します。指定方法は、operator の説明を参照してください。
- operator ・・・ 特定の日付(1日)を指定する場合は、xlAnd や xlOr を指定します(省略可)。
複数(2日)の日付を指定する場合は、xlOr を指定し、引数 criteria1 と criteria2 に抽出したい日付を指定します。
特定の期間の抽出をする場合は以下のとおりに指定します。引数 内容 criteria1 “>= [開始日]” または、“> [開始日]” を指定します。 criteria2 “<= [終了日]” または、“< [終了日]” を指定します。 operator xlAnd を指定します。
※ 3日以上の日付を指定する場合は、xlFilterValues を指定します(Excel 2007 以上のみ)。引数 criteria1 に抽出したい日付を配列で指定します。
日付を指定する場合の注意事項
オートフィルタで、レコードを抽出するとき日付によって絞り込む場合、Excel のバージョンによって抽出結果が、異なる場合があります。以下の表のとおりに行うと期待通りの結果が得られるはずですが、念のため、マクロの記録等などで、確認するほうがよいかもしれません。
セルの表示形式 | Excel Ver. | 引数 criteria1 に指定する内容 |
先頭に「*」が付く日付形式 2015/7/26 |
2003/2007 |
DateValue 関数を指定 criteria1 := DateValue(“2015/7/26”) または 日付リテラルを指定 criteria1 := #7/26/2015# |
先頭に「*」が付く日付形式 2015/7/26 |
2010/2013 |
文字列形式で指定 criteria1 := “2015/7/26” |
先頭に「*」が付かない日付形式 7月26日 |
2003/2007 2010/2013 |
セルに表示されているままを文字列で指定 criteria1 := “7月26日” |
日付を指定する場合、すべてのバージョンで同じ結果を得る方法
「特定の期間」を抽出する方法を利用することで、書式にかかわらず、Excel 2003/2007/2010/2013 のいずれのバージョンでも特定の日付を抽出可能です。
(例)2015/7/26 を抽出したい場合
criteria1 =: “>=2015/7/26”
criteria2 =: “<=2015/7/26”
operator =: xlAnd
AutoFilter メソッド の引数の詳細については、オートフィルタ(AutoFilter メソッド) を参照してください。
日付で抽出する 使用例
サンプルVBAソース 実行前
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 |
Sub Sammple08_1_AutoFilter() 'フィールド番号10「納品日」7月26日または8月1日を抽出(Excel 2013) Range("A1").AutoFilter Field:=10, _ Criteria1:="7月26日", _ Criteria2:="8月1日", _ Operator:=xlOr End Sub |
実行結果
サンプルVBAソース 2
1 2 3 4 5 6 7 8 9 10 |
Sub Sammple08_2_AutoFilter() 'フィールド番号11「支払日」2015/9/10 を抽出(Excel 2013) Range("A1").AutoFilter Field:=11, _ Criteria1:="2015/9/10" End Sub |
実行結果
サンプルVBAソース 3
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sammple08_3_AutoFilter() 'フィールド番号10「納品日」 '2015/7/26 以降(当日含む)2015/7/26 以前(当日含む)(Excel 2013) Range("A1").AutoFilter Field:=10, _ Criteria1:=">=2015/7/26", _ Criteria2:="<=2015/7/26", _ Operator:=xlAnd End Sub |
実行結果
サンプルVBAソース 4
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sammple08_4_AutoFilter() 'フィールド番号10「納品日」 '2015/12/16 以降(当日含まない)2015/12/25 以前(当日含まない)(Excel 2013) Range("A1").AutoFilter Field:=10, _ Criteria1:=">2015/12/15", _ Criteria2:="<2015/12/25", _ Operator:=xlAnd End Sub |
実行結果
サンプルVBAソース 5
1 2 3 4 5 6 7 8 9 10 |
Sub Sammple08_5_AutoFilter() 'フィールド番号10「納品日」指定日を抽出(Excel 2013) Range("A1").AutoFilter Field:=10, _ Criteria1:=Array("8月1日", "12月17日", "12月25日"), _ Operator:=xlFilterValues End Sub |
実行結果
関連記事
-
A1 形式と R1C1 形式を変換、相対参照と絶対参照を変換(ConvertFormula)
ConvertFormula メソッド 数式で参照しているアドレスの相対参照と絶 …
-
並べ替え(Sort オブジェクト, SortFields コレクション)
Sort オブジェクトによる並べ替え Excel 2007 以降のバージョンでの …
-
フリガナ(Phonetic プロパティ)
Phonetic プロパティ 文字列(漢字など)をキーボードから入力した時の「読 …
-
オートフィルタ(色で抽出する)AutoFilter メソッド
オートフィルタ(色で抽出する) フォントの色、セルの背景色(条件付き書式による設 …
-
重複するデータを削除(RemoveDuplicates メソッド)
RemoveDuplicates メソッド 指定したセル範囲から重複データを含む …
-
2つ以上のセル範囲を1つにまとめて参照(Union メソッド)
Union メソッド Union メソッドは、2つ以上のセル範囲を1つにまとめて …
-
任意の行または列を参照(Rows プロパティ,Columns プロパティ)
Rows プロパティ・Columns プロパティ Rows プロパティは、オブジ …
-
セルの表示形式を設定・取得する(NumberFormat プロパティ)
NumberFormat プロパティ NumberFormat プロパティは、現 …
-
フリガナ(Phonetics プロパティ)
Phonetics プロパティ Phonetics コレクションを返します。値の …
-
オートフィルタの状況を確認(AutoFilterMode, FilterMode)
AutoFilterMode プロパティ AutoFilterMode プロパテ …