クロス集計クエリを使用して集計データを読みやすくする

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

集計データを読みやすく、理解しやすくするには、クロス集計クエリの使用を検討してください。クロス集計クエリは、合計や平均などの集計関数を計算し、集計結果を 2 セットの値に分類してデータシートの行と列の両方向に表示します。リボンの [作成] をクリックし、[クエリ] で [クエリ ウィザード] をクリックします。[新しいクエリ] ダイアログ ボックスの [クロス集計クエリ ウィザード] をダブルクリックします。

一連の見出しに日付の値がある場合、ウィザードによって月や四半期などの標準的な期間でレコードをグループ化することができます。

注: クロス集計クエリは Access アプリケーションで使用できず、Web データベースでは一部しかサポートされていません。Web オブジェクトでは使用できません。Web データベースでクロス集計クエリを使用するには、Access でデータベースを開きます。Access アプリケーションの詳細については、「Access アプリケーションを作成する」を参照してください。Web データベースの詳細については、「SharePoint 2010 で Web データベースを編集または発行する」を参照してください。

この記事の内容

概要

クロス集計クエリを作成する

見出しに範囲または期間を使用する

行見出しを制限するためのパラメーターの入力を求める

NULL 値をゼロで置き換える

クロス集計クエリのヒント

概要

クロス集計クエリは、選択クエリの一種で、合計、平均、カウントなどの関数の集計データを 2 つのカテゴリ パターンに分類するために使用します。2 つのうち 1 つは期間になる場合が多いです。たとえば、クロス集計を使用して、1 か月ごとの売上合計を地域別に表示することができます。クロス集計クエリで表示される結果は、次の図に示すように、同じデータを表示する単純な選択クエリよりも読みやすくなります。

同じデータを表示する選択クエリとクロス集計クエリ

1. この選択クエリでは、従業員とカテゴリを基準にして、垂直方向だけに集計データがグループ化されています。

2. このクロス集計クエリでは、同じデータが水平方向と垂直方向の両方にグループ分けされて表示されています。

クロス集計クエリを作成する際は、行見出しを含むフィールド、列見出しを含むフィールド、集計値を含むフィールドを指定します。列見出しおよび集計値を指定するときは、それぞれに 1 つのフィールドのみを使用できます。行見出しを指定するときは、フィールドを 3 つまで使用できます。

式を使用して行見出し、列見出し、または集計値を作成することもできます。

クロス集計クエリの図

1. こちら側の 1 列、2 列、または 3 列には行見出しが格納されます。行見出しとして使用するフィールドの名前が、これらの列の 1 行目に表示されます。

2. ここに、行見出しが表示されます。複数の行見出しフィールドを使用すると、行見出しの組み合わせごとに行が作成されるため、クロス集計データシートの行数が、急速に増加する場合があります。

3. こちら側の列には、列見出しおよび集計値が格納されます。列見出しフィールドの名前はデータシートには表示されません。

4. ここに、集計値が表示されます。

クロス集計クエリ ウィザードを使用する利点

  • 日付を自動的に期間でグループ化できる     列見出しに日付/時刻のデータが含まれている場合、ウィザードによって月や四半期などの標準的な期間で日付をグループ化することができます。

    注: ウィザードに表示されない期間 (会計年度や 2 年間など) を使用する場合は、ウィザードで作業を保存することはできません。カスタム期間を使用するには、デザイン ビューでクロス集計クエリを手動で作成し、式を使用してカスタム期間を作成します。

  • 出発点として使用することができる     ウィザードを使用して基本的なクロス集計クエリを作成し、デザイン ビューを使用して、クエリのデザインを微調整します。

デザイン ビューで使用可能なクロス集計機能

  • 入力を求めるクエリの作成 (パラメーター プロンプトの追加)    パラメーター プロンプトを追加すると、クエリによってダイアログ ボックスを表示し、その入力内容を使用することにより追加するデータを決定できます。たとえば、クロス集計に製品カテゴリ別の四半期売上高が表示されますが、一度に 1 つの地域のデータしか必要ないとします。パラメーターを使用すれば、使用する地域を求めるクエリを作成することができます。

  • クエリのフィールドとして式を使用する    フィールドのデータで軽微な計算やその他の関数を実行する必要がある場合があります。たとえば、データに NULL 値がある場合は、クロス集計の結果が正確または完全でない可能性があります。これを修正するには、Nz 関数をフィールドに適用します。NULL がゼロで置き換えられます。

  • 固定値のリストを列見出しとして使用するように指定する    列見出しを独自の値で置き換えたい場合もあります。たとえば、列見出しの期間では意図したとおりに並べ替えられない場合があります。正しく並べ替えることのできる値で置き換えれば、問題ありません。

デザイン ビューでクロス集計クエリを作成するときは、デザイン グリッドの [集計] 行および [クロス集計] 行を使用して、値を列見出しに使用するフィールド、値を行見出しに使用するフィールド、および合計、平均、カウント、または他の計算の対象フィールドを指定します。

デザイン ビューに表示されたクロス集計クエリの部分

1. これらの行の設定により、フィールドが行見出し、列見出し、または集計値のいずれになるかが決まります。

2. この設定では、フィールドの値が行見出しとして表示されます。

3. この設定では、フィールドの値が列見出しとして表示されます。

4. これらの設定により、集計値が作成されます。

ページの先頭へ

クロス集計クエリを作成する

クロス集計クエリ ウィザードから始める

クロス集計クエリ ウィザードによって、単独のテーブルまたはクエリがクロス集計クエリのレコード ソースとして選択できるようになります。テーブルにクロス集計クエリに含めるデータがすべて含まれていない場合は、まず必要なデータを返す選択クエリを作成します。選択クエリの作成方法の詳細については、「クエリの概要」を参照してください。

  1. [作成] タブの [クエリ] で [クエリ ウィザード] をクリックします。

  2. [新しいクエリ] ダイアログ ボックスの [クロス集計クエリ ウィザード] をクリックし、[OK] をクリックします。

    クロス集計クエリ ウィザードが開始します。

  3. ウィザードの最初のページで、クロス集計クエリを作成するために使用するテーブルまたはクエリを選択します。

  4. 次のページで、行見出しとして使用する値が格納されているフィールドを選択します。

    行見出しのソースとして、フィールドを 3 つまで選択できますが、使用する行見出しが少ないほど、クロス集計データシートが読みやすくなります。

    注: 行見出しとして複数のフィールドを選択する場合、フィールドを選択する順序によって、結果を並べ替える既定の順序が決まります。

  5. 次のページで、列見出しとして使用する値が格納されているフィールドを選択します。

    通常は、結果が読みやすくなるよう、少ない値が格納されているフィールドを選択します。たとえば、使用する値が少ないフィールド (性別など) を使用する方が、使用する値が多いフィールド (年齢など) を使用するよりも望ましいです。

    列見出しとして使用するように選択したフィールドが日付/時刻データ型の場合、月、四半期などの期間に日付をグループ化する方法を指定できる手順が追加されます。

  6. 列見出しに日付/時刻型フィールドを選択すると、ウィザードの次のページでは日付のグループ化に使用する期間を指定するように求められます。[]、[四半期]、[]、[]、[日付/時刻] を指定することができます。列見出しに日付/時刻型フィールドを選択しない場合、このページはスキップされます。

  7. 次のページで、集計値の計算に使用するフィールドと関数を選びます。選んだフィールドのデータ型によって、使用できる関数が決まります。

  8. 同じページで、[集計値を表示する] チェック ボックスをオンまたはオフにして、行の合計を含めるか、除外します。

    行の合計を含めると、クロス集計クエリには、フィールド値と同じフィールドおよび関数を使用する行見出しが追加されます。行の合計を含めることにより、残りの列を集計する追加の列が挿入されます。たとえば、クロス集計クエリで場所および性別 (性別の列見出し) ごとに平均年齢を計算する場合、追加の列では、すべての性別の場所ごとの平均年齢が計算されます。

    デザイン ビューでクロス集計クエリを編集すると、行の合計を作成するために使用する関数を変更できます。

  9. ウィザードの次のページで、クエリの名前を入力し、結果を表示するか、クエリ デザインを変更するかを指定します。

デザイン ビューでクロス集計クエリを手動で作成する

  1. [作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。

  2. [テーブルの表示] ダイアログ ボックスで、レコード ソースとして使用するそれぞれのテーブルまたはクエリをダブルクリックします。

    複数のレコード ソースを使用する場合は、テーブルまたはクエリが共通するフィールドで結合されていることを確認します。テーブルとクエリを結合する方法の詳細については、[参照] セクションを参照してください。

  3. [テーブルの表示] ダイアログ ボックスを閉じます。

  4. [デザイン] タブの [クエリの種類] で [クロス集計] をクリックします。

  5. クエリ デザイン ウィンドウで、行見出しのソースとして使用する各フィールドをダブルクリックします。行見出しにはフィールドを 3 つまで選択できます。

  6. クエリ デザイン グリッドの、それぞれの行見出しフィールドに対する [クロス集計] 行で [行見出し] をクリックします。

    [抽出条件] 行に式を入力して、フィールドの結果を制限することができます。[並べ替え] 行を使用して、フィールドの並べ替え順序を指定することもできます。

  7. クエリ デザイン ウィンドウで、列見出しのソースとして使用するフィールドをダブルクリックします。列見出しには、1 つのフィールドのみを選択できます。

  8. クエリ デザイン グリッドの、列見出しフィールドに対する [クロス集計] 行で [列見出し] をクリックします。

    [抽出条件] 行に式を入力して、列見出しフィールドの結果を制限することができます。ただし、列見出しフィールドに条件式を使用しても、クロス集計クエリから返される列の数は制限されません。代わりに、データが含まれる列が制限されます。たとえば、赤、緑、および青の 3 つの値を使用できる列見出しフィールドがあるとします。列見出しフィールドに条件 ='青' を適用した場合、クロス集計に赤の列と緑の列は表示されますが、データは青の列にのみ格納されます。

    列見出しとして表示する値を制限する場合は、クエリの "列見出し" プロパティを使用して、固定値のリストを指定することができます。詳細については、「列見出しに固定値を指定する」を参照してください。

  9. クエリ デザイン ウィンドウで、集計値の計算に使用するフィールドをダブルクリックします。集計値に使用するフィールドを 1 つだけ選択することができます。

  10. クエリ デザイン グリッドの、集計値に対する [集計] 行で、値の計算に使用する集計関数を選択します。

  11. 集計値フィールドに対する [クロス集計] 行で、[] をクリックします。

    集計値フィールドには、条件または並べ替えを指定できません。

  12. [デザイン] タブの [結果] グループで、[実行] をクリックします。

列見出しに固定値を指定する

列見出しに使用する固定値を指定する場合は、クエリの "列見出し" プロパティを設定します。

  1. デザイン ビューでクロス集計クエリを開きます。

  2. プロパティ シートが表示されていない場合は、F4 キーを押して表示します。

  3. プロパティ シートで、[標準] タブのすぐ上の [選択の種類] が [クエリ プロパティ] になっていることを確認します。そうでない場合は、クエリ デザイン グリッドの上のスペースで空白の場所をクリックします。

  4. プロパティ シートの [標準] タブの "列見出し" プロパティで、列見出しとして使用するカンマ区切りの値のリストを入力します。

    注: 一部の文字 (ほとんどの句読点など) は、列見出しに使用できません。これらの文字を値のリストに使用すると、該当する文字がそれぞれアンダースコア (_) に置き換えられます。

ページの先頭へ

見出しに範囲または期間を使用する

フィールドのデータ値を範囲でグループ化し、その範囲を (単に値を使用するのではなく) 行見出しまたは列見出しで使用する場合があります。たとえば、列見出しに "年齢" フィールドを使用するとします。それぞれの年齢の列を使用するよりも、40 ~ 49 のような年齢層を表す列を使用する方が適している場合があります。

式で IIf 関数を使用することにより、行または列の見出しに使用する範囲を作成できます。

ヒント: 日付/時刻フィールドで期間を作成する場合は、クロス集計クエリ ウィザードの使用を検討してください。ウィザードを使用すると、日付を []、[四半期]、[]、[]、[日付/時刻] の期間にグループ化できるようになります。これ以外の期間が必要な場合は、デザイン ビューでクロス集計クエリを作成し、このセクションで説明する手法を使用して、必要な期間を作成する必要があります。

IIf の機能

IIf 関数は、式を評価した後、式が True の場合にはある値を返し、式が False の場合には別の値を返します。IIf ステートメントを入れ子にすると、比較の論理的なシーケンスを作成することができます。IIf を使用して数値のフィールド値を範囲に区切ることができます。

IIf 構文

IIf( expr, truepart, falsepart )

IIf 関数の構文には、次の引数があります。

引数

説明

expr

必須。評価する式です。

truepart

必須。exprTrue の場合に返される値または式です。

falsepart

必須。exprFalse の場合に返される値または式です。

式を使用して範囲を作成する

  1. デザイン ビューでクロス集計クエリを開きます。

  2. クエリ デザイン グリッドの [フィールド] 行で、空白の列を右クリックし、ショートカット メニューの [ズーム] をクリックします。

  3. [ズーム] ボックスに、フィールドの別名と、その後にコロン (:) を入力します。

  4. IIf()」と入力します。

  5. IIf の後に続くかっこの中に、フィールド値の 1 つ目の範囲を定義する比較式を入力します。

    たとえば、"年齢" フィールドの範囲を作成していて、各範囲を 20 歳にするとします。最初の範囲の比較式は [年齢]<21 です。

  6. 比較式の後にカンマを入力し、範囲の名前を引用符で囲んで入力します。指定する名前は、その範囲にある値のクロス集計の見出しになります。

    たとえば、[年齢]<21 の後にカンマを入力し、次に「"0 ~ 20 歳"」と入力します。

  7. 範囲名の後 (引用符の外側) にカンマを入力して、次のいずれかの操作を行います。

    • 別の範囲を作成するには、「IIf()」と入力して、手順 5、6、7 を繰り返します。

    • 最後の範囲には、範囲の名前のみを入力します。

      たとえば、"年齢" フィールドを 20 歳の範囲に区切る、完全に入れ子になった IIf 式は、次のようになります (読みやすいように改行が追加されています)。

      IIf([Age]<21,"0-20 years",
      IIf([Age]<41,"21-40 years",
      IIf([Age]<61,"41-60 years",
      IIf([Age]<81,"61-80 years", "80+ years"))))

      注: 式の評価は、IIf ステートメントのいずれかが True と評価されると、すぐに中止されます。それぞれの範囲の下限を指定する必要はありません、指定された範囲を下回る値はすべて True と評価されるためです。

  8. クエリ デザイン グリッドの [集計] 行で [グループ化] をクリックします。

  9. [クロス集計] 行で、範囲を行見出しまたは列見出しとして使用するかどうかを指定します。行見出しは 1 つから 3 つ、列見出しは 1 つ指定することができます。

ページの先頭へ

行見出しを制限するためのパラメーターの入力を求める

クロス集計クエリの実行時に入力を求めるようにしたい場合があります。たとえば、複数の行見出しを使用していて、その 1 つが [国/地域] であるとします。その場合、すべての国または地域のデータを毎回表示するよりも、クエリで名前の入力を求め、ユーザーの入力に従ってデータを表示することができます。

任意の行見出しフィールドにパラメーター プロンプトを追加することができます。

注: 列見出しフィールドにはパラメーター プロンプトを追加することもできますが、これによって表示される列が制限されるわけではありません。表示する列を制限する方法の詳細については、「列見出しに固定値を指定する」を参照してください。

  1. デザイン ビューでクロス集計クエリを開きます。

  2. ユーザーの入力を求める行見出しフィールドの [抽出条件] 行に、質問文を角かっこで囲んで入力します。質問文はクエリの実行時にプロンプトとして表示されます。

    たとえば、[抽出条件] 行に、「[国または地域を入力してください。]」と入力すると、クエリが実行されたときにダイアログ ボックスが表示され、その中に "国または地域を入力してください。" という質問、入力ボックス、および [OK] ボタンが表示されます。

    ヒント: パラメーターに柔軟性を持たせるには、Like 演算子を使用して、式とワイルドカードを連結します。たとえば、[国または地域を入力してください。] を条件として使用する代わりに、Like [国または地域を入力してください。]&"*" を使用してパラメーター入力の一致範囲を広げます。Like を使用しても、パラメーター プロンプトの外観は変わりません。

  3. [デザイン] タブの [表示/非表示] で [パラメーター] をクリックします。

  4. [クエリ パラメーター] ダイアログ ボックスの [パラメーター] 列に、[抽出条件] 行で使用したのと同じパラメーター プロンプトを入力します。角かっこも含めますが、連結したワイルドカードや Like 演算子は含めないでください。

  5. [データ型] 列で、各パラメーターのデータ型を選択します。このデータ型は、行見出しフィールドのデータ型と一致する必要があります。

ページの先頭へ

NULL 値をゼロで置き換える

クロス集計クエリの集計値を計算するために使用するフィールドに NULL 値が含まれている場合、その値は使用するすべての集計関数で無視されます。一部の集計関数では、結果に影響が出る可能性があります。たとえば、平均を計算するには、すべての値を加算し、その結果を値の数で除算します。ただし、フィールドに NULL 値が含まれている場合、その NULL 値は、値の数にカウントされません。

場合によっては、集計計算で値がカウントされるように、すべての NULL 値をゼロに置き換える方が望ましいこともあります。NULL 値をゼロに置き換えるには、Nz 関数を使用します。

Nz 構文

Nz( variant [, valueifnull ] )

Nz 関数の構文には、次の引数があります。

引数

説明

variant

必須。データ型 Variant の変数です。

valueifnull

オプション (クエリで使用されている場合を除く)。variant 引数が NULL の場合に返す値を提供する Variant です。この引数を使用すると、0 または長さが 0 の文字列以外の値を返すことができます。

注: 引数 valueifnull を使用せずに、クエリの式で Nz 関数を使用すると、NULL 値を含むフィールドは長さが 0 の文字列になります。

  1. デザイン ビューでクエリを開いた状態で、クエリ デザイン グリッドの "" フィールドを右クリックします。

  2. ショートカット メニューの [ズーム] をクリックします。

  3. [ズーム] ボックスで、フィールド名または式をかっこで囲み、かっこの前に「Nz」と入力します。

  4. 右かっこの直前に「, 0」と入力します。

    たとえば、Nz と "失われた時間" という名前のフィールドを使用して NULL 値をゼロに変換する場合、入力する式は次のようになります。

Nz([Hours Lost], 0)

ページの先頭へ

クロス集計クエリのヒント

  • 簡潔に記述する    クロス集計クエリは、行の組み合わせ数が増えると読みにくくなる可能性があります。必要以上に行見出しを使用しないでください。

  • 手順を追ってクロス集計を作成することを検討する    テーブルのみを使おうとして考えを限定しないでください。集計クエリを作成し、そのクエリをクロス集計クエリのレコード ソースとして使用して開始することもできます。

  • 列見出しフィールドは慎重に選択する    クロス集計データシートは、列見出しの数が比較的少ない方が読みやすくなります。見出しとして使用するフィールドを確認したら、列見出しとして作成される値が最も少ないフィールドを選択します。たとえば、クエリで年齢と性別による値を計算する場合、通常、性別の方が年齢よりも値が少ないため、年齢ではなく性別を列見出しに使用します。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×