- ベストアンサー
アクセスのDsum関数の使い方
これまでに何度となく同じような質問を出している者です。すみません・・・。以前は下記の【newcode】を【code】と【国名】から作成する方法を質問しその問題は解消しました。 【code】 【国名】 【newcode】 111 日本 111_日本 111 日本 111_日本 111 中国 111_中国 111 中国 111_中国 121 アメリカ 121_アメリカ 121 アメリカ 121_アメリカ 123 日本 123_日本 123 日本 123_日本 123 中国 123_中国 しかし、この表にはまだもう一つの作業が残っているのです。それは、下記のように 【code】 【国名】 【A1】 【A1合計】 111 日本 10 30 111 日本 20 30 111 中国 25 40 111 中国 15 40 121 アメリカ 22 37 121 アメリカ 25 37 123 日本 20 35 123 日本 15 35 123 中国 30 30 【A1】が追加されているのです。 そして、【A1合計】として【code】と【国名】が同じものを『DSum関数』を使用してレコードの合計値を出すにはどうしたらいいでしょうか? 以前は、上にあった【newcode】を使い、『DSum("[A1]","[シート名]","[newcode]='" & [newcode] & "'")』といった演算でやっていたんですが・・・。条件を『[code]=[code]and[国名]=[国名]』といった感じでやりたいのです。 すみませんが、教えていただけるとありがたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3、DexMachinaです。 > 質問に書いたとおり前には、条件式を増やすやり方ではムリでしょうか? えーと・・・その方法でしたら、「code」と「cade」の打ち間違い(「o」が「a」に なっている)がありますが(汗)、No.2でn-junさんが既に答えられています。 なお、質問文を見返していて気になった点があったので、念のためですが、 「And」の前後には必ず半角スペースが入りますので、手入力する際は ご注意下さい。 それと、もしも現状では「'」の置き方がわかりにくいようでしたら、以下の 書き方でも同じ意味になりますので、参考まで。 (かえってわかりにくかったら、すみません(汗)) 【「"'" & [code] & "'"」でひとセット、という形】 DSum("[A1]","シート名","[code]=" & "'" & [code] & "'" & " And [国名]=" & "'" & [国名] & "'") 【さらに、「And」も分離した形】 DSum("[A1]","シート名","[code]=" & "'" & [code] & "'" & " And " & "[国名]=" & "'" & [国名] & "'") ※「[code]=」と「"'" & [code] & "'"」が1条件目の指定、 「[国名]=」と「"'" & [国名] & "'"」が2条件目の指定で、 それを「" And "」でつないでいます。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
普通下記でやると思う。アクセスのクエリの基本だけで出来る。 ーー 操作主義で説明する。実際のアクセスでやってみてください。 例データ 国別計数テーブル ID コード 国名 計数 1 111 日本 10 2 111 日本 20 3 111 中国 25 4 111 中国 15 5 121 アメリカ 22 6 121 アメリカ 25 7 123 日本 20 8 123 日本 15 9 123 中国 30 ーー クエリのデザイングリッドで 国別計数クエリ コード 国名 計数 国別計数 国別計数 国別計数 グループ化 グループか 合計 表示 表示 表示 ーーー クエリー実行で 実行結果 コード 国名 計数の合計 111 中国 40 111 日本 30 121 アメリカ 47 123 中国 30 123 日本 35 ーーーー これと元の国別テーブルを左結合で結合する クエリー新規作成ー選択クエリ テーブル/クエリ 国別計数 フィールドは全選択 完了 デザイン テーブルの表示ー国別計数クエリをダブルクリック 左 右 (国別係数)ーー(国別計数クエリ)の結合線を下記のように引く コードー コード 国名 ー 国名 (国別計数クエリ)の「計数の合計」を新しいフィールド列へD&D するとデザインは コード 国名 計数 計数の合計 国別計数 国別計数 国別計数 国別計数クエリ 全て表示 ーー クエリー実行で 結果 コード 国名 計数 計数の合計 111 日本 10 30 111 日本 20 30 111 中国 25 40 111 中国 15 40 121 アメリカ 22 47 121 アメリカ 25 47 123 日本 20 35 123 日本 15 35 123 中国 30 30
お礼
アドバイスありがとうございました。 色々とやってみたいと思います。
- DexMachina
- ベストアンサー率73% (1287/1744)
先日のこちらの質問の回答者です: http://oshiete1.goo.ne.jp/qa5168984.html そちらの回答時は、ユーザー関数を使用した「第2段階」が後に控えていたため、 「第1段階」ではそれに近い形となるDCountでの回答をしましたが、実際には クエリを使用した方が、(速度的に)よいかと思います。 既に回答は出ていますが、初心者が比較的とりかかりやいと思われる、「クエリの デザインビューで対応可能な方法」を、以下にご紹介します。 (但し、クエリは2つ作ることになります) 【概要】 <1つ目のクエリ> Codeと国名でグループ化し、A1の合計を出す <2つ目のクエリ> 上記クエリと元のテーブルを、Codeと国名で結合させ、各Codeと国名ごとでの A1の合計を同時に表示させる <1つ目のクエリの作成> 1)Accessのメニューで「挿入(I)→クエリ(Q)」を選択するなどして、『新しいクエリ』 ダイアログを開く 2)「デザインビュー」を選択し、Okをクリック 3)『テーブルの表示』ダイアログで、対象テーブルをダブルクリックするなどして追加 4)『Σ』(集計)ボタンをクリックして、『集計』行を表示させる 5)フィールドに『Code』『国名』『A1』を追加し、『集計』行を以下の通り設定: Code:グループ化 国名:グループ化 A1:合計 6)クエリを保存して閉じる(名前を、仮に「Q1_合計」とします) (この状態だとA1は「A1の合計」と表示されるので、「A1合計」に変更する場合は 再度デザインビューを開いて、「の」を削除してください) <2つ目のクエリの作成> 1)上記「1~2」を実行後、今度は『テーブルの表示』ダイアログで、対象テーブルと 『Q1_合計』クエリの2つを追加 (上記ダイアログで、『クエリ』タブを選択すると、クエリが表示されます) 2)対象テーブル側の『Code』を、『Q1_合計』クエリの『Code』の上にドラッグ&ドロップ →それぞれの「Code」が線で結合されます 3)「国名」についても同様にして結合 4)対象テーブルから、『Code』『国名』『A1』を『フィールド』に追加 5)『Q1_合計』クエリから、『A1合計』を追加 →添付画像のような形になります 6)クエリを保存して閉じる ・・・以上です。 これで、2つ目のクエリを開くと、ご要望の結果が得られると思います。
補足
DexMachinaさん、いつもありがとうございます。 今回の質問にも答えていただきありがとうございました。一応、教えていただいたとおりやってできたのはできたんですが、どうにかクエリ一つで、できないものでしょうか? 質問に書いたとおり前には、条件式を増やすやり方ではムリでしょうか?ほんとうにすみません。
- n-jun
- ベストアンサー率33% (959/2873)
A1合計:Dsum("[A1]","[シート名]","[cade]='" & [cade] & "' AND [国名]='" & [国名] & "'") でしょうか?
お礼
アドバイスありがとうございます。色々とやってみます。
- 30246kiku
- ベストアンサー率73% (370/504)
他にも方法はあると思います(以下クエリの一例) SELECT T1.code, T1.国名, T1.A1, T2.A1合計 FROM テーブル名 AS T1 INNER JOIN (SELECT code, 国名, Sum(A1) AS A1合計 FROM テーブル名 GROUP BY code, 国名) AS T2 ON T1.code = T2.code AND T1.国名 = T2.国名; ※但し、提示されたものを上記クエリで試してみると 121 アメリカ 22 37 121 アメリカ 25 37 は、 121 アメリカ 22 47 121 アメリカ 25 47 になります。
お礼
アドバイスありがとうございました。 数値が間違ってましたね・・・。 色々とやってみます。
お礼
いつも、いつも細かい回答をありがとうございます。 頑張ってやってみますね!