フィルター処理は、Access データベースに表示するデータのみを表示する便利な方法です。 フィルターを使用して、フォーム、レポート、クエリ、またはデータシートに特定のレコードを表示したり、レポート、テーブル、またはクエリの特定のレコードのみを印刷したりできます。 フィルターを適用すると、基になるオブジェクトのデザインを変更することなく、ビュー内のデータを制限できます。
この記事の内容
フィルターの有用性
フィルターを適用した後に表示されるビューには、選択した値を持つレコードのみが含まれるため、残りのデータはフィルターをクリアするまで非表示のままになります。
注
式に連結されたフォームとレポートのデータシートの列およびコントロールは、フィルター処理をサポートしていません。
フィルターにはいくつかの種類があり、その中には適用と削除が簡単なものもあります。 Access には、すべてのビューに組み込まれているいくつかの共通フィルターが含まれています。 フィルター コマンドを使用できるかどうかは、フィールドの種類と値によって決まります。
たとえば、生年月日が特定の月に該当する人のレコードを表示するには、[ホーム] タブの [並べ替え & フィルター] グループの [生年月日] 列をクリックし、[フィルター] をクリックし、ダイアログ ボックスの [日付フィルター] をクリックし、必要な期間を選択します。
1. 使用できるフィルターは、選択した列のデータ型によって異なります。
- [期間内のすべての日付] フィルターでは、日付値の日と年の部分は無視されます。
このフィルターされたビューでは、[ 生年月日] フィールドの月の部分が 4 月に設定されているレコードのみが表示されます。
1. 列見出しのフィルター アイコンとレコード ナビゲーター バーは、現在のビューが [生年月日] 列でフィルター処理されていることを示します。
2. データシート ビューで、列見出しの上にマウス ポインターを置くと、現在のフィルター条件が表示されます。
注
既にフィルターが適用されている列にフィルターを適用すると、前のフィルターが自動的に削除されます。 一度にフィールドに適用できるフィルターは 1 つだけですが、ビュー内のフィールドごとに異なるフィルターを指定できます。
たとえば、英国在住で、生年月日が 4 月の連絡先の名前を表示するには、"国または誕生日" フィールドで "連絡先" テーブルをフィルター処理します。 単一ビューの複数のフィールドをフィルター処理する場合、次のように AND 演算子を使ってフィルターを結合します。
国または地域 = イギリス AND 生年月日の月 = 4 月
フィルター処理されていないビューに戻すには: フィルターを削除します。 フィルターを削除すると、フィルターがビューから一時的に削除されるため、元のフィルター処理されていないビューに切り替えて戻ることができます。
フィルター処理されたビューとフィルター処理されていないビューを切り替えるには、[ホーム] タブの [並べ替え & フィルター] グループで、[フィルターの切り替え] をクリックします。
ビューからフィルターを完全に削除するには: フィルターをクリアします。 フィルターをクリアする方法については、「 フィルターをクリアする」セクションを参照してください。
オブジェクトの別のビューに切り替えても、オブジェクトを閉じるまでフィルター設定は有効です。 つまり、データシート ビューでフォームをフィルター処理した場合、フィルター設定は、フォーム ビューまたはレイアウト ビューに切り替えても有効であり、フォームを閉じるまで有効です。 フィルターが適用された状態でオブジェクトを保存した場合、このフィルターは次にオブジェクトを開いたときに使用可能になります。 フィルターの保存の詳細については、この記事の 「フィルターを保存する」 セクションを参照してください。
フィルターの種類を選択して適用する
データ型に対してすぐに使用できる複数のフィルターから選択できます。 これらのフィルターは、データシート、フォーム、レポート、レイアウトの各ビューで、メニュー コマンドとして使用できます。 これらのフィルター以外にも、(フォーム フィルターと呼ばれる) フォームに入力して、フォームまたはデータシートをフィルター処理することもできます。
より高い柔軟性が必要である場合や、式の作成に慣れている場合は、[フィルター] ドキュメント タブのオプションを使用して独自のフィルターを作成できます。
次の種類のフィルターから選択します:
共通フィルター: 特定の値または値の範囲をフィルター処理します。
選択によるフィルター処理: データシート ビューにフィルター処理して、行で選択した値と一致する値を含むテーブル内のすべての行をフィルター処理します。
フォームでフィルター処理: フォームまたはデータシート内の複数のフィールドでフィルター処理する場合、または特定のレコードを検索しようとしている場合に抽出します。
高度なフィルター: カスタム フィルター条件を定義するフィルター タイプ。
注
どのビューにもフィルター コマンドが表示されない場合は、フォームまたはデータベースの設計者によってフィルター処理が無効化されている可能性があります。 サポートについては、設計者にお問い合わせください。
共通フィルター
OLE オブジェクトのフィールド、および計算された値を表示するフィールドを除き、すべてのフィールドの種類には共通フィルターが用意されています。 使用できるフィルターのリストは、選択されているフィールドのデータ型と値に応じて異なります。
フィルターを適用するフィールドを右クリックします。 複数の列またはコントロールをフィルター処理するには、各列またはコントロールを個別に選択してフィルター処理するか、高度なフィルター オプションを使用する必要があります。 詳細については、この記事の「フォーム フィルター」および「高度なフィルター」を参照してください。
たとえば、[ 生 年月日] フィールドで使用できるフィルターを表示するには、[ホーム] タブの [ 並べ替え & フィルター ] グループで、[ フィルター] をクリックします。
1. 特定の値をフィルター処理するには、チェック ボックス リストを使用します。 このリストには、フィールドに現在表示されているすべての値が表示されます。
2. 値の範囲をフィルター処理するには、これらのフィルターのいずれかをクリックして、必要な値を指定します。 たとえば、現在の日付から年末までに相当する誕生日を表示するには、[次の値の間] をクリックし、[次の値の間] ダイアログ ボックスで適切な開始日と終了日を指定します。 特定の日付に該当するすべての誕生日を表示するには、その日付をクリックすると、その特定の日付に該当するすべての誕生日が表示されます。
日付フィールドの値は、型固有のフィルターのリストに影響を与えることに注意してください。 日付フィールドの最新の日付値が過去 2 年以内である場合は、長く詳細なフィルター リストが表示されます。 過去 2 年以内の日付がフィールドに含まれていない場合は、短いフィルター リストが表示されます。
注
型固有のフィルターは、Yes/No 型、OLE オブジェクト型、および添付ファイル型の各フィールドでは使用できません。 値の一覧は、長いテキスト フィールド、またはリッチ テキストを含むフィールドでは使用できません。
共通フィルターを適用する
データシート、フォーム、レポート、またはレイアウトのいずれかのビューで、テーブル、クエリ、フォーム、またはレポートを開きます。
ビューにフィルターが適用されていないことを確認します。 レコード セレクター バーに [フィルター処理なし] アイコンが表示されているか、[フィルターなし] アイコンが淡色表示されていることを確認します。
ヒント
特定のオブジェクトのフィルターをすべて削除するには、[ホーム] タブの [並べ替えとフィルター] で [詳細設定] をクリックし、[すべてのフィルターのクリア] をクリックします。
フィルターを適用する最初のフィールドに対応する列またはコントロール内の任意の場所をクリックし、[ ホーム ] タブの [ 並べ替え & フィルター ] グループで [ フィルター] をクリックします。
共通フィルターを適用するには: テキスト (または 数値 または 日付) フィルターをポイントし、目的のフィルターをクリックします。 [次の値と等しい] や [次の値の間] などのフィルターを選ぶと、必要な値の入力を求めるメッセージが表示されます。
ヒント
*、%、? などの特定の文字は、フィルター テキスト ボックスで指定すると特別な意味を持ちます。 たとえば、* は文字列を表すため、文字列 a* は、リテラル文字列 a* だけでなく、a で始まるすべての文字列に一致します。 文字の特別な意味を無視するには、a[*] のように角かっこ [] で囲みます。 ANSI-89 標準を使用するデータベースでは、*、?、[]、, -,、# は特殊文字として扱われます。 ANSI-92 標準を使用するデータベースでは、%, _、[, ], ^、および - は特殊文字として扱われます。 Access ではどちらの標準でも使用できますが、特定の式で 2 つの標準 ( ?a* など) を混在させることはできません。
フィールド値に基づいてフィルターを適用するには: フィルター処理を行わない値の横にあるチェック ボックスをオフにし、[OK] をクリックします。
長いリスト内の値を 1 つまたは少数のみでフィルター処理するには、まず [(すべて選択)] チェック ボックスをオフにしてから、目的の値を選択します。
文字列、数値、日付フィールドの Null 値 (null 値はデータがないことを示します) をフィルターで抽出するには: チェック ボックスの一覧で、[(すべて選択] チェック ボックスをオフにし、[(空白セル)] の横にあるチェック ボックスをオンにします。
選択によるフィルター処理
行の値と一致する値を含むテーブル内のすべての行を表示するには、特定の値を選択して [ 選択] コマンドをクリックして、データシート ビューにすばやくフィルター処理できます。 ドロップダウン リストに、使用可能なフィルタリング オプションが表示されます。 これらのオプションは、選択した値のデータ型によって異なります。 選択フィルター オプションにアクセスするもう 1 つの方法は、特定のセルを右クリックすることです。
たとえば、現在 [生年月日] フィールドで "2/21/1967" という値が選択されている場合、[ ホーム ] タブの [並べ替え & フィルター ] グループで、[ 選択 ] をクリックして選択によるフィルターを表示し、フィルター オプションを選択します。
コマンドのリストは、選択されている値の量によっても異なります。 たとえば、値に含まれる一部の文字だけを選んだ場合は、選んだフィールドの部分に応じて、異なるコマンド リストが表示されます。
1. フィールド値の先頭を使ってフィルター処理する
2. ...フィールド値の真ん中...
3. ...またはフィールド値の末尾。
注
部分的な選択に基づくフィルター処理は、複数値を持つフィールドでは使用できません。 [選択] コマンドを添付ファイルに使用することはできません。
フィルターを削除するには、[ ホーム ] タブの [並べ替え & フィルター ] グループで [フィルターの切り替え] をクリックするか、[ 詳細設定 ] をクリックして [ すべてのフィルターをクリア] をクリックします。
選択範囲に基づくフィルターを適用する
- データシート、フォーム、レポート、またはレイアウトのいずれかのビューで、テーブル、クエリ、フォーム、またはレポートを開きます。
- ビューにフィルターが適用されていないことを確認します。 レコード セレクター バーに [フィルター処理なし] アイコンが表示されているか、[フィルターなし] アイコンが淡色表示されていることを確認します。
- フィルターの一部として使用する値が含まれているレコードに移動して、列 (データシート ビューの場合) またはコントロール (フォーム、レポート、またはレイアウト ビューの場合) の内部をクリックします。
部分的な選択に基づいてフィルター処理を行う;目的の文字を選択し、[ ホーム ] タブの [ 並べ替え & フィルター ] グループで [ 選択] をクリックして、適用するフィルターをクリックします。
フォーム フィルター
このフィルターは、フォームまたはデータシート内の複数のフィールドでフィルター処理する場合や、特定のレコードを検索する場合に便利です。 Access では、元のフォームまたはデータシートに似た空のフォームまたはデータシートが作成され、必要な数のフィールドに値を入力できます。 入力が完了すると、指定した値を含むレコードが検索されます。
注
フォームによるフィルターを使用して複数値を持つフィールドのフィールド値を指定したり、長いテキスト、ハイパーリンク、Yes/No、OLE オブジェクトなどのフィールドの値をレコードセット内の他のフィールドの値を指定することはできます。
たとえば、連絡先のタイトルが 所有者であり、その担当者が ポートランド または ユージーンのいずれかに所在するすべての顧客レコードを検索する場合は、顧客データシートまたはフォームを開き、[ ホーム ] タブの [並べ替え & フィルター ] グループで [ 詳細設定] をクリックし、[ フォームによるフィルター] をクリックします。
最初の値セットを入力し、データシートまたはフォームの下部にある [ または ] タブをクリックして、次の値セットを入力します。 フィールド値を他のフィールド値とは別にフィルターとして動作させる場合は、[ 検索] タブと各 [または ] タブにその値を入力する必要があります。各 [Or ] タブは、フィルター値の代替セットを表します。
入力に一致するレコードのみを表示するには: [ ホーム] タブの [並べ替え & フィルター ] グループで、[ フィルターの切り替え] をクリックします。
フォームに入力してフィルターを適用する
データシート ビューでテーブルまたはクエリを開くか、フォーム ビューでフォームを開きます。
ビューがまだフィルター処理されていないことを確認します。 レコード セレクター バーに [フィルター処理なし] アイコンが表示されているか、[フィルターなし] アイコンが淡色表示されていることを確認します。
[ホーム] タブの [並べ替えとフィルター] で [詳細設定] をクリックし、ショートカット メニューの [フォーム フィルター] をクリックします。
データシート ビューとフォーム ビューのどちらで作業しているかに応じて、次のいずれかの操作を行います。
データシート ビュー: フィルターを実行する列の最初の行をクリックし、表示される矢印をクリックして、値を選びます。 その他の値を追加するには、データシートの下部にある [ または ] タブをクリックし、別の値を選択するだけです。
フォーム ビュー: コントロールに表示される矢印をクリックし、フィルター処理の対象となる値を選択します。 その他の値を追加するには、フォームの下部にある [ または ] タブをクリックし、別の値を選択します。ヒント
フォームによるフィルターを使用して複数値を持つフィールドのフィールド値を指定することはできませんが、レコードセット内の複数値以外のフィールドの値を指定することはできます。
- フィールドに使用できる値のリストを指定するには、or 演算子を使用します。 たとえば、[市区町村] フィールドに "Portland" または "Oregon" を指定すると、いずれかの値を含むレコードが抽出されます。
- チェック ボックスやボタンなどのコントロールのステータスに基づいてフィルター処理するには、コントロールが適切な状態になるまでクリックします。 レコードの抽出条件として使用されないようにコントロールを無指定の状態に戻すには、使用不可になるまで (淡色表示されるまで) クリックします。
- Null 値 (値なし)、非 Null 値、空白値 (空または "")、または非空白値を含むレコードを抽出するには、フィールドに「Is Null」、「Is Not Null」、「""」、または「Not ""」と入力します。
代替の抽出条件を 2 つ指定する場合 (たとえば、[国または地域] の値が "米国" で、生年月日が 4 月の連絡先の名前のみを表示する場合は、次のいずれかの操作を実行できます。
- 複数の条件セットのいずれかに一致するすべてのレコードを取得するには、最初の条件セットを入力して条件を指定します。 [または ] タブをクリックしてから、次の条件セットを入力します。 フィールド値を他のフィールド値とは別にフィルターとして動作させる場合は、[ 検索] タブと各 [または ] タブにその値を入力する必要があります。つまり、[ 検索] タブと各 [ または ] タブは、フィルター値の代替セットを表します。
- また、[ または] タブにフィールドの条件を追加するたびに、別の [または] タブが作成されます。これにより、複数の "or" 条件を指定できます。 このフィルターを適用すると、[抽出条件] タブで指定したすべての値を含むレコード、または最初の [または] タブで指定したすべての値を含むレコード、または 2 番目の [または] タブで指定したすべての値を含むレコードが返さる、などのようになります。
フィルターを削除してすべてのレコードを表示するには、もう一度 [ フィルターの切り替え ] をクリックします。
フォームによるフィルターを変更するには、[ 詳細設定] をクリックし、もう一度 [ フォームによるフィルター ] をクリックします。 現在のフィルター抽出条件セットが表示されます。
高度なフィルター
場合によっては、高度なフィルターの種類であるフィルターを適用し、フィルター条件を自分で記述することが必要な場合があります。 たとえば、過去 7 日間または過去 6 か月間の日付を含むレコードを検索します。
高度なフィルターを使用するには、式を記述する必要があります。 式は Excel の数式に似ており、クエリを設計するときに指定する抽出条件に似ています。
高度なフィルターを使用する例の 1 つは、誕生日が過去 7 日間に発生した連絡先の名前を検索することです。 高度なフィルターを適用した後、さらに、国/地域が USA のユーザーのみに検索結果を制限できます。
高度なフィルターを適用する
データシート、フォーム、レポート、またはレイアウトのいずれかのビューで、テーブル、クエリ、フォーム、またはレポートを開きます。
ビューにフィルターが適用されていないことを確認します。 レコード ナビゲーター バーで [フィルターなし] が淡色表示されている (使用不可である) ことを確認します。 レコード ナビゲーター バーが表示されていない場合は、[ホーム] タブの [並べ替えとフィルター] で [詳細設定] をクリックし、[すべてのフィルターのクリア] をクリックします ([すべてのフィルターのクリア] が淡色表示されている場合、有効なフィルターはありません)。
[ホーム] タブの [並べ替えとフィルター] で [詳細設定] をクリックし、ショートカット メニューの [フィルター/並べ替えの編集] をクリックします。
フィルターを適用するフィールドをグリッドに追加します。
各フィールドの [抽出条件] 行で、抽出条件を指定します。 抽出条件はまとめて適用され、すべての抽出条件に一致したレコードだけが [抽出条件] 行に表示されます。 代替的な抽出条件を単一のフィールドに対して指定するには、[抽出条件] 行に最初の抽出条件を入力し、[または] 行に 2 番目の抽出条件を入力します。
ヒント
- [または] 行のすべての抽出条件のセットが、[抽出条件] 行の代替抽出条件のセットとして適用されます。 両方の抽出条件のセットとして適用する抽出条件については、[抽出条件] 行と [または] 行の両方に入力する必要があります。 フィルターが適用された行を表示するには、[フィルターの切り替え] をクリックします。
- 抽出条件の作成方法を学ぶには、希望に近い結果を生成する共通フィルターまたは選択フィルターを適用します。 次に、ビューにフィルターを適用した状態で、[オブジェクト のフィルター] タブを表示します
[ドキュメントのフィルター] タブの特別なコマンド
[フィルター] ドキュメント タブでは、2 つの特殊なコマンドを選択できます。このタブのデザイン グリッドの上で右クリックすると、ショートカット メニューに [クエリから読み込み] と [クエリとして保存] が表示されます。
[クエリから読み込み] をクリックすると、選択したクエリのデザインがグリッドに読み込まれます。 これにより、クエリ条件をフィルター条件として使用できます。
[クエリとして保存] をクリックすると、フィルター設定を新しいクエリとして保存できます。
フィルターを削除または再適用する
データのフィルター処理なしビューに切り替えるには、レコード ナビゲーター バーの [フィルター処理] をクリックしてフィルターを削除し、全画面ビューに戻します。
現在のフィルターを削除すると、フィルターはビュー内のすべてのフィールドから一時的に削除されます。 たとえば、まず [国または地域] フィールドと [生年月日] フィールドでフィルターを適用してから、フィルターを削除すると、すべてのレコードが再び表示されます。
最新のフィルターを再適用するには、レコード ナビゲーター バーの [ フィルター処理なし] をクリックします。
フィルターをクリアする
不要になったフィルターはクリアします。 フィルターをクリアすると、ビューからフィルターが削除され、ステータス バーの [フィルター処理なし] をクリックしてもフィルターを再適用できなくなります。 単一のフィールドから単一のフィルターをクリアすることも、ビュー内のすべてのフィールドからすべてのフィルターをクリアすることもできます。
- 1 つのフィールドから 1 つのフィルターをクリアするには: フィルターが適用された列またはコントロールを右クリックし、[ フィールド名からフィルターをクリア] をクリックします。
- すべてのフィールドからすべてのフィルターをクリアするには: [ ホーム ] タブの [ 並べ替え & フィルター ] グループで [ 詳細設定] をクリックし、ショートカット メニューの [すべてのフィルターをクリア] をクリックします。
フィルターを保存する
フィルターをもう一度使う場合は、保存しておくと便利な場合があります。 テーブル、クエリ、フォーム、またはレポートを閉じたときに有効になっているフィルター設定は、オブジェクトと共に自動的に保存され、再適用することができます。 ただし、既定では、オブジェクトを次回開いたときにフィルター設定が自動的に適用されるわけではありません。
次にテーブル、クエリ、フォーム、またはレポートを開いたときに現在のフィルターが自動的に適用されるようにするには、オブジェクトのプロパティ シートからオブジェクトの FilterOnLoad プロパティを Yes に設定します。 次にオブジェクトを開くときに、 FilterOnLoad プロパティが適用されます。 この設定を変更するたびに、新しい設定を適用するには、オブジェクトを閉じて再度開く必要があります。
注
FilterOnLoad プロパティの設定は、オブジェクトが読み込まれたときにのみ適用されます。 デザイン ビューでオブジェクトにこのプロパティを設定し、別のビューに切り替えると、設定は適用されません。 FilterOnLoad プロパティ設定の変更を有効にするには、オブジェクトを閉じて再度開く必要があります。