• ベストアンサー

ACCESSで2種類に分類してカウントするクエリを作りたいのですが…

1~29までの数字が書かれた29枚のカードから5枚を同時に引き、 記録していくデータベースを作成するとき、 1~29が何回出てきたかを以下の種類によってカウントしたいのですが… ・同じレコードの他の数字の上一桁(一の位、十の位)の数が  「単数(1つ)」か「複数(2つ以上)」かによって  別カウントとして集計していきたいのですが。 (記録テーブル[全て数値型]) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 ------------------------------------------ (1)    1    2    3    4    10 (2)    1    2    3    10    11 (3)    1    10   11    12   20 (各番号テーブル) フィールド名「各番号」 レコード数=29 上記のような記録のとき 回数(1)は一の位が4個出現(1.2.3.4)なのでカウントは複数      十の位が1個出現(10)なのでカウントは単数 回数(2)は一の位が3個出現(1.2.3)なのでカウントは複数      十の位が2個出現(10.11)なのでカウントは複数 回数(3)は一の位が1個出現(1)なのでカウントは単数      十の位が3個出現(10.11.12)なのでカウントは複数      二十の位が1個出現(20)なのでカウントは単数 要約すると一の位と十の位と二十の位に分けて 同時に引いた5枚のうち それぞれの位が1つなのか複数なのかによって カウントを別に分けて集計したいのですが… ・作りたいもの (単数複数カウントクエリ) カード   単    複 ←単、複ごとに出た数をカウント ----------------------- 1      1      2 2      2 3      2 : 10      1      2 11            2 12            1 : 20      1 : 上記のようなクエリはどうやれば作れるのでしょうか? ご回答、よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
noname#15703
noname#15703
回答No.1

 テーブル1つと、クエリ2つでやってみました。  テーブル「T_n枚目」にテキストフィールド「n枚目」を作り、その内容は、 [1枚目] [2枚目] [3枚目] [4枚目] [5枚目] の5文字5レコードとします。かぎカッコの中身は、記録テーブルのフィールド名と同じにします。  次にクエリ「Q_単複」を作ります。その内容は、 SELECT 記録テーブル.*, 10^([1枚目]\10)+10^([2枚目]\10)+10^([3枚目]\10)+10^([4枚目]\10)+10^([5枚目]\10)+1000 AS 各枚数, DLookUp([n枚目],"記録テーブル","[回数]=" & [回数])+0 AS カード, IIf(Mid([各枚数],Len([各枚数])-[カード]\10,1)=1,"単","複") AS 単複 FROM 記録テーブル, T_n枚目; とします。  最後に、クロス集計クエリで TRANSFORM Count(Q_単複.単複) AS 単複のカウント SELECT Q_単複.カード FROM Q_単複 GROUP BY Q_単複.カード PIVOT Q_単複.単複; を実行すればよいと思います。

kintetsu
質問者

補足

回答ありがとうございます。 いただいた回答の通りテーブル1つとクエリ2つで 思ったとおりの結果を得ることが出来ました! いただいた回答を応用して30番台を含むときと 40番台を含むときの2種類を作ろうとしましたが 上手く行きませんでした。 「Q_単複」クエリをいじればよいと思うのですが 30番台を含む場合、 40番台を含む場合の クエリにするには「Q_単複」の文のどこを変更すれば出来るのでしょうか?

その他の回答 (4)

noname#15703
noname#15703
回答No.5

 No.1とNo.4の訂正です。  もともと+1000は不要でした。+1000も+100000もつけないでください。  すみませんでした。

kintetsu
質問者

お礼

了解しました。 自分でもやってみましたが +1000なしでもいけました。 何度もご回答いただきありがとうございました。

noname#15703
noname#15703
回答No.4

 No.1の続きです。 >30番台を含む場合、 >40番台を含む場合の >クエリにするには「Q_単複」の文のどこを変更すれば +1000 の部分を +100000 に変更してください。

noname#192382
noname#192382
回答No.3

No2の追加です。下記のプログラムを先のプログラムの跡に追加しますと単数は111ね複数は999と表示されます Select Case Cells(yy, xx) Case 1 Cells(yy, xx) = 111 Case 2 To 9 Cells(yy, xx) = 999 End Select Next xx Next yy

noname#192382
noname#192382
回答No.2

まず9以下、10から19まで、20以上の3つに数を調べることを考えました。それを回答します。当方xpでえくせる97です。 回数 1枚目 2 3 4 5 1 1 5 6 15 3 2 1 2 3 10 11 3 1 10 11 12 20 4 1 0 3 2 0 1 3 1 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2006/2/19 ユーザー名 : ' ' Dim xx, yy As Integer For yy = 2 To 4 Cells(yy, 8) = 0: Cells(yy, 9) = 0: Cells(yy, 10) = 0 For xx = 2 To 6 Select Case Cells(yy, xx) Case 1 To 9 Cells(yy, 8) = Cells(yy, 8) + 1 Case 10 To 19 Cells(yy, 9) = Cells(yy, 9) + 1 Case 20 To 29 Cells(yy, 10) = Cells(yy, 10) + 1 Case Else End Select Next xx Next yy End Sub 上の段のデータに対し計算結果が下の団の様に出ます。 このあとの単数複数の計算は容易と思います。

kintetsu
質問者

お礼

回答ありがとうございます。 EXCELは今手元にないのですが 帰ったら試してみます

関連するQ&A

  • (ACCESS)合計を求めたいのですが…

    赤、青、白の3色のサイコロを同時に振って 出た目を色ごとに記録していく データベースを作成しようとしています。 サイコロの目ごとに色別の出現回数を カウントしたクエリを さらに1まとめに合計したいと思い 色々いじくってみたのですが うまく出来ません。 集計して合計を出すには どうすればよいのでしょうか? ---------------------------------------------- テーブル サイコロテーブル      フィールド(回数、白色、青色、赤色)      目テーブル       レコード(サイコロの目=1,2,3,4,5,6) クエリ 選択クエリ(白、青、赤) 選択クエリ(まとめ)

  • Accessの更新クエリについて質問です。

    よろしくお願いします。 集計したクエリを元に更新クエリを実行すると、更新できません。 やりたい作業としては、売上データテーブルのレコード数を得意先ごとにカウントして、得意先マスタテーブルのレコード件数フィールドを更新する作業です。 追加クエリで一度テーブルに追加してから、テーブル同士で更新も考えたんですが、レコード数が多いためにDBのサイズが爆発的に増えて廃案になりました。 何か良い方法があれば教えてください。

  • ACCESSのクエリの中でのクエリ指定

    ACCESSのクエリで複数テーブルを結合させ明細表示させました。 その明細作成クエリーを更にそのクエリをテーブルと指定して 合計のクエリを作成して結果を確認すると合計が違っていました。 確認の為、集計を取りその明細クエリーをクエリー上でテーブル 指定してみたところ、元の明細クエリーのみの場合とレコード数 がかわっって表示されまました。 クエリーのテーブルにクエリを指定するのはNGなのでしょうか。 何方かなぜそうなるのか、また、正しい方法があれば教えてください。 宜しくお願いします。

  • ACCESSのクエリで集計

    チェックボックスにチェックのあるものの個数を数えたいのですが、クエリの集計でカウントを選び抽出条件にYesを入れても結果がレコード数の数でしか出てきません。集計条件を合計にするとチェックのあるものは-1なのでマイナスの数字が出てきます。どうしたらよいのでしょうか?

  • Access クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

  • ACCESSである数字が出なかった時、次回のレコードを抽出したいのですが

    1~19までの数字が書かれた19枚のカードから5枚を同時に引き、 記録していくデータベースを作成するとき、 A.一の位(1~9)が1つも出なかった時の次回記録(次行)のレコードを抽出するクエリ B.十の位(10~19)1つも出なかった時の次回記録(次行)のレコードを抽出するクエリ 上記2つのクエリを作りたいのですが… (記録テーブル) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 ---------------------------------- (1)    1    4    5    7    9 (2)    1    2    3    10    12 (3)    10   12    13   16    18 (4)    1    2    3    4    5 (5)    5    6    7    15    16 上記の記録の時 A.一の位(1~9)が1つも出なかった時に該当するのは回数(3)なので その次回にあたる回数(4)を抽出 (クエリ1) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 -------------------------------------- (4)    1    2    3    4    5 B.十の位(10~19)1つも出なかった時に該当するのは回数(1)と回数(4)なので それぞれの次回にあたる回数(2)、回数(5)を抽出 (クエリ2) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 -------------------------------------- (2)    1    2    3    10    12 (5)    5    6    7    15    16 といったように 一の位が1つも出なかった次回のレコード、 十の位が1つも出なかった次回のレコードを 抽出するクエリ(SQL?)をそれぞれ 作成するにはどうすればよいのでしょうか? ご回答、よろしくお願いします。

  • ACCESS クエリ(カウント0のレコードも表示させたい)

    すみません。クエリについて教えて下さい。 <生徒テーブル> 生徒ID・氏名 <出席テーブル> 生徒ID・日付 上記2のテーブルから、クエリで下記の情報を取り出したいのです。 <出席日数> 氏名・出席日数 <出席テーブル>には、1レコードもない生徒がいます。 この生徒は<出席日数>の出席日数を0として表示したいんです。 カウントを使って計算したところ、<出席テーブル>に1レコードもない生徒は表示できません。 説明がわかり難くて申し訳ないです。 どうぞ教えてください。

  • ACCESSで同時に出た数字を数字別にカウントするにはどうすればよいのでしょうか?

    現在ACCESSの勉強をしています。 1~6までの数字が書かれた6枚のカードから3枚を同時に引いて 出たカードの数字を記録していくデータベースを作るとき、 ・同時に引いた3枚が1,3,6だった時 「1」のレコードに同時に出たカードの数字、3.6をカウント 「3」のレコードに同時に出たカードの数字、1.6をカウント 「6」のレコードに同時に出たカードの数字、1.3をカウント 数字(1~6)ごとに同時に引いた残り2枚の数字を 記録していくクエリを作りたいのですが このような集計をするには どのようにクエリを作成すればよいのでしょうか? 作成方法がわかる方、ご助力をよろしくお願いいたします。

  • Accessクエリでのグループ化

    Accessクエリでのグループ化 以下の2つのテーブルが有ります。 ■社員テーブル ID 名前 1 Aさん 2 Bさん 3 Cさん 4 Dさん 5 Eさん ■受付テーブル ID 受付内容 受付日   社員ID 1  xxxxx 2010/3/1   1 2 xxxxx 2010/3/20   3 3 xxxxx 2010/4/10   2 4 xxxxx   2010/4/11  5 5 xxxxx 2010/4/15  1 6 xxxxx 2010/4/30  2 7 xxxxx 2010/5/3  4 そこで社員毎の受付数をカウントしたいと思っています。 ※受付日が2010/4/1以上5/1未満 名前 受付回数 Aさん 1 Bさん 2 Cさん 0 Dさん 0 Eさん 1 となるイメージです。 しかし、実際にクエリを作ると結果が 名前 受付回数 Aさん 1 Bさん 2 Eさん 1 と、なってしまいます。。 名前:グループ化 受付テーブルのID:カウント 受付日:>=2010/04/01 and <2010/05/01 ※社員テーブルの『ID』と、受付テーブルの『社員ID』を  紐つけており、結合プロパティでは『社員テーブルの  全レコードと受付テーブルの同じ結合フィールドのレコード  だけを含める』としております。 あらかじめ、受付テーブルで受付期間の条件でクエリ を作成しておき、それと社員テーブルを紐つけた場合は イメージ通りの結果になるのですが、1つのクエリで 上記イメージでの結果を表示したいと思ってます。 可能でしょうか? ご教授願います。

  • ACCESSの空白をカウントする

    こんにちはAccessについて教えて下さい。 素人です宜しくおねがいします。 日付のデータが入るテーブルがあります。 この日付は物品の出荷の日にちと入荷の日にちを示しています。 入荷したら入荷日に日付を入れ、出荷したら出荷日に日付を 入れます。 在庫管理のため入荷日が入っているけれど出荷日を入力していない空白せるの数をVBAかクエリかWhere条件式でカウントしたいです。 調べたところクエリの集計のカウントでは空白セルをのぞいた数を数えてしまうようです。 ですから、Is Nullでも””””でも集計できなかったです。 どうすればよろしいでしょうかどうぞ宜しくお願いします。

専門家に質問してみよう