• 締切済み

ACCESSのクロス集計クエリを使って・・・・

クロス集計クエリを使って次のようなことは可能でしょうか。 テーブル 名前1 担当1 担当2 担当3 名前2 担当2 担当3 担当4 名前3 担当3 担当4 担当5 クロス集計の結果 担当1 名前1 担当2 名前1 名前2 担当3 名前2 名前3 担当4 名前3 名前4 担当5 名前5 というように作りたいのですが何かうまい方法はありませんでしょうか。 よろしくお願いします。  

みんなの回答

noname#112806
noname#112806
回答No.3

たびたびすみません。 1つの担当に対する名前の数も不定なんですよね? 1つ名案が浮かびましたので参考までに… まず、テーブルを3つに分けます。   T_担当 担当ID(主キー)、担当名   T_名前 名前ID(主キー)、名前   T_統合 統合ID(主キー)、名前ID、担当ID 次に標準モジュール内に以下の関数を作成します。   Function GetName(TantouID As Long, Number As Long) As String    Dim dbs As DAO.Database    Dim rst As DAO.Recordset    Dim SQL As String    Dim RecCnt As Long    Dim i As Integer    Dim Namelist As Variant    SQL = "SELECT 名前 FROM ((T_統合 INNER JOIN T_名前 ON T_統合.名前ID=T_名前.名前ID) INNER JOIN T_担当 ON T_統合.担当ID=T_担当.担当ID) WHERE T_統合.担当ID=" & TantouID & " ORDER BY T_統合.名前ID"    Set dbs = CurrentDb    Set rst = dbs.OpenRecordset(SQL)    If rst.BOF And rst.EOF Then     GetName = ""    Else     rst.MoveLast     RecCnt = rst.RecordCount     rst.MoveFirst     ReDim Namelist(RecCnt - 1) As String     For i = 0 To RecCnt - 1      Namelist(i) = rst!名前      rst.MoveNext     Next     If UBound(Namelist) < Number - 1 Then      GetName = ""     Else      GetName = Namelist(Number - 1)     End If    End If     End Function 最後にクエリを作成します。 基になるテーブルはT_担当でフィールドは 担当者名、名前1: GetName([担当ID],1)、名前2: GetName([担当ID],2)、名前3: GetName([担当ID],3)、… といった形で必要な数だけ名前のフィールドを作成すればご希望のものが出来上がるかと思います。 テーブル名、フィールド名等は適当に変更してください。 説明が下手なので分からないことが多々あるかと思いますが参考にしてみてください。

noname#112806
noname#112806
回答No.2

いろいろ考えてみましたが、クロス集計ではできないと思います。 レポート&イベントプロシージャならできそうな気がしますが…。 力になれなくてすみません。

vhb1953
質問者

お礼

お手数掛けして申し訳ありません。レポート&イベントプロシージャでの作成方法についてご教授いただければありがたいのですが。

noname#112806
noname#112806
回答No.1

いまいちテーブルの構造が分からないのですが、1つの名前に対して担当は3つと決まっているのでしょうか?

vhb1953
質問者

補足

ありがとうございます。担当は人によって違います。1から20ぐらいまであります。

関連するQ&A

  • アクセス クロス集計クエリ→テーブル作成クエリ

    クロス集計クエリは、 そのままテーブル作成クエリを使って クロス集計クエリのままテーブルにすることはできないのでしょうか? クロス集計クエリの時は、行見出し・列見出しがあるのに、 そのままテーブルにはなりません。

  • クロス集計クエリ

    クロス集計クエリは、行の合計しか表示する事が出来ないのでしょうか? 列の合計(縦の合計)もクロス集計クエリで表示するには どうすればいいですか? サブクエリとか使わないとダメでしょうか? もうひとつ合計行のクロス集計クエリを作るのが楽ですか?

  • ACCESSのクロス集計クエリについて

    ACCESS2000のクロス集計クエリで超初歩的な質問なのですが、、 こんなテーブルがあります。 メーカー  商品名 A社    テレビ B社    テレビ A社    ラジオ A社    テレビ これをACCESSのクロス集計クエリでこんな感じにしたいです。 メーカー  商品名   集計 A社    テレビ   2 A社    ラジオ   1 B社    テレビ   1 エクセルでは、行見出しに「メーカー」と「商品名」を入れて値に「メーカー」か「商品名」どちらかを入れれば希望通りの結果になるのですが、ACCESSのクロス集計では、列見出しに必ず入れないとエラーが出るようです。入れなくても良い方法かもっといい方法がありましたらご教授ください。   

  • Accessのクロス集計について

    お願いします アクセスで次のようなアンケートCSVをインポートして集計しています。質問1・2に入力されるのは選択肢番号です <アンケート結果テーブル> 名前   回答者 質問1  ========================== 20080710 Aさん   1   20080710 Bさん   2    20080710 Cさん   5    上記をクロス集計を行い日別の集計を行っております。 <クロス集計> 日付   1 2 5 =========================== 20080710 1 1 1  上記の結果を回答がなかった選択番号は下記のように0を表示させたいのですがどうすればよろしいでしょうか? 日付   1 2 3 4 5 =========================== 20080710 1 1 0 0 1 

  • Access2003 クロス集計クエリでの合計

    ☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [A]      [B]    [C]     1    111     英語    10    2    222     英語    20    3    333     数学    30    4    111     国語    40   5    222     数学    50    6    333     国語    60    7    222     国語    70   8    333     英語    80     9    111     数学    90     =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、    フィールド[B]を列見出しに設定、    フィールド[C]を集計する項目に設定する。   (2) フィールド[C]の値を列ごとに平均を計算し、    行ごとに合計を計算する。   ※ 列と行で、それぞれ集計した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]     合計  英語  国語  数学     111  140   10    40    90        222  140   20    70    50     333  170   80    60    30  --------------- 平均  150   36     56   56 ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • クロス集計 エクセル

    アクセスにはクエリにクロス集計がありますが エクセルにもクロス集計と言う機能があるのでしょうか? エクセル2010を持っています。 ピボットテーブルの事を クロス集計と呼ぶのでしょうか?

  • クロス集計クエリ

    こんなデータテーブルがあります、選択クエリ後、クロス集計クエリで (結果)のような表示をしたい、可能でしょうか?ご教授下さい A社  テレビ   A-TV-1 A社  冷蔵庫   A-R-1 A社  エアコン  A-R-1 B社  テレビ   B-TV-2 B社  エアコン  B-BB-1 B社  冷蔵庫   E-E1-1-3   クロス集計クエリ結果       テレビ    冷蔵庫      エアコン A社   A-TV-1    A-R-1      A-R-1 B社   B-TV-2    E-E1-1-3    B-BB-1

  • クロス集計クエリの結果を一時テーブルに保存する 

    タイトルのような操作を求め下記のようなやり方を発見したのですが、なぜこのような2種類のクエリを作成しなければならないのかがわかりません。 2つのクエリの意味・役割をご存知の方がいらっしゃったら教えて下さい。 宜しくお願いします。 Q あるテーブルからクロス集計クエリを作成し、そのままそのクエリをテーブル作成クエリにしたところ、クロス集計が解除されてしまいます。クロス集計の結果をテーブルに保存することはできないのでしょうか A クロス集計クエリを作成して、そのままそのクエリをテーブル作成クエリにすることはできないようです。 その場合は、クエリを2つ作成し2段階でテーブルを作成するようにします。 1つめのクエリではテーブルなどを基にしてクロス集計を行います。 2つめのクエリでは1つめのクエリを「テーブルの表示」一覧から「クエリ」タブに切り替えて選択してテーブル作成クエリとします。 参照:http://www.nbcom.co.jp/PC-Support/FAQ/acc/ht/acc092004ht001.shtml

  • accessでクロス集計した結果を摘出する方法

    access2007を使っています。 ロータスアプローチからの乗り換えなのでかなり使い方が違い戸惑っています。 クエリよりクロス集計をし、その結果を他のクエリに反映させたいのですが、方法が判りません。 また、クロス集計以外で似たようなデータ摘出方法があれば教えてください。

  • Access2003 クロス集計で集計値を四捨五入

    ☆以下のようなテーブルで、フィールド[ID]~[点数]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [クラス]  [科目]  [点数]     1     A     英語    11    2     B     英語    22    3     C     数学    33    4     A     国語    44   5     B     数学    55    6     C     国語    66    7     B     国語    77   8     C     英語    88     9     A     数学    99     =========================================== ☆上記のテーブルをクロス集計クエリで集計する ・フィールド[クラス]を行見出しに設定、 ・フィールド[科目]を列見出しに設定、 ・フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 =========================================== [クロス集計結果]   合計   英語  国語  数学       A  154   11    44    99        B  154   22    88    55     C  187   99    77    33  =========================================== [課題] クロス集計クエリで、集計値を四捨五入する (1) フィールド[クラス]を行見出しに設定、    フィールド[科目]を列見出しに設定、    フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 (2) クロス集計の値を、下1桁で四捨五入した値を表示する。   (3) 「合計」の値を、下1桁で四捨五入した値を表示する。 ※ クロス集計した合計値を、四捨五入した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]   合計   英語  国語  数学     A  150   10    40   100        B  150   20    80    60     C  190   90    70    30  ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のように、クロス集計クエリでの集計値を四捨五入して 表示させたいのですが、どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

専門家に質問してみよう