[Access 2016/2013/2010]
クエリのレコードを、「昇順」や「降順」ではなく、自分で決めた特定の順序で並べ替えたいことがあります。
図1のテーブルを見てください。「顧客名」「ランク」などの顧客情報が入力されたテーブルです。このテーブルからクエリを作成して、図2のように「SS、S、A、B」のランク順に並べ替えたいときに、[昇順]や[降順]の並べ替えを設定しても目的の順序にはなりません。自分で決めた順序で並べ替えるには、その並び順を何らかの方法で定義する必要があります。
今回、並べ替えの基準となるのは「SS」「S」「A」「B」の4項目ですが、このように項目数が少ない場合は、Switch関数を使用して手軽に並び順を定義できます。ここでは、その方法を紹介します。
なお、並べ替えの基準となる項目数が多い場合は、テーブルを使用して並び順を定義するほうがよいでしょう。詳しくは、「クエリのレコードを都道府県の地理順に並べ替える」を参照してください。
【予備知識】Switch関数を使用してランクの並び方を定義する
Switch関数を使用すると、複数の項目に番号付けを行えます。
構文 Trueの式に対応する値を返す
Switch(式1, 値1, 式2, 値2 …, 式n, 値n)
ここでは、昇順で並べ替えたときに「SS、S、A、B」の順に並ぶように、「SS」に「1」、「S」に「2」、「A」に「3」、「B」に「4」という番号を振ることにします。それには、Switch関数を使用して、
- [ランク]フィールドの値が「SS」の場合は「1」を返す
- [ランク]フィールドの値が「S」の場合は「2」を返す
- [ランク]フィールドの値が「A」の場合は「3」を返す
- [ランク]フィールドの値が「B」の場合は「4」を返す
という式を作成します。
入力式 「SS」に「1」、「S」に「2」、「A」に「3」、「B」に「4」という番号を振る
Switch([ランク]="SS",1,[ランク]="S",2,[ランク]="A",3,[ランク]="B",4)
【操作手順】クエリを作成して並べ替えを定義する
具体的な手順を見ていきましょう。
クエリを作成して、テーブルから必要なフィールドを追加したら、一番右の[フィールド]欄にSwitch関数の式を入力します(図3)。入力した式の前に「式1:」などの仮のフィールド名が自動で付加されますが、そのままでかまいません。続いて、[昇順]の並べ替えを設定します。
いったん、データシートビューに切り替えて、クエリの様子を確認してみましょう(図4)。レコードがSwitch関数の戻り値の昇順に並べ替えられ、結果として「SS、S、A、B」の順に並びます。
「式1」フィールドはデータシートに表示する必要がないフィールドなので、非表示にしましょう。クエリをデザインビューに切り替え、[式1]フィールドの[表示]のチェックを外します(図5)。
すると、冒頭の図2のように、[式1]フィールドが非表示になります。
メモ