gooドクター有料プランが1ヶ月間無料!

これまでに何度となく同じような質問を出している者です。すみません・・・。以前は下記の【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[国名]=[国名]』といった感じでやりたいのです。
すみませんが、教えていただけるとありがたいです。

gooドクター

A 回答 (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 "」でつないでいます。
    • good
    • 1
この回答へのお礼

いつも、いつも細かい回答をありがとうございます。
頑張ってやってみますね!

お礼日時:2009/08/18 22:58

普通下記でやると思う。

アクセスのクエリの基本だけで出来る。
ーー
操作主義で説明する。実際のアクセスでやってみてください。
例データ
国別計数テーブル
IDコード国名計数
1111日本10
2111日本20
3111中国25
4111中国15
5121アメリカ22
6121アメリカ25
7123日本20
8123日本15
9123中国30
ーー
クエリのデザイングリッドで
国別計数クエリ
コード   国名    計数
国別計数  国別計数  国別計数
グループ化 グループか 合計

表示    表示    表示  
ーーー
クエリー実行で
実行結果
コード国名計数の合計
111中国40
111日本30
121アメリカ47
123中国30
123日本35
ーーーー
これと元の国別テーブルを左結合で結合する
クエリー新規作成ー選択クエリ
テーブル/クエリ 国別計数 
フィールドは全選択
完了
デザイン
テーブルの表示ー国別計数クエリをダブルクリック
  左      右
(国別係数)ーー(国別計数クエリ)の結合線を下記のように引く
コードー     コード
国名 ー     国名
(国別計数クエリ)の「計数の合計」を新しいフィールド列へD&D
するとデザインは
コード  国名   計数    計数の合計
国別計数 国別計数 国別計数  国別計数クエリ
全て表示
ーー
クエリー実行で
結果
コード国名計数計数の合計
111日本1030
111日本2030
111中国2540
111中国1540
121アメリカ2247
121アメリカ2547
123日本2035
123日本1535
123中国3030
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
色々とやってみたいと思います。

お礼日時:2009/08/18 23:00

先日のこちらの質問の回答者です:


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つ目のクエリを開くと、ご要望の結果が得られると思います。
「アクセスのDsum関数の使い方」の回答画像3

この回答への補足

DexMachinaさん、いつもありがとうございます。
今回の質問にも答えていただきありがとうございました。一応、教えていただいたとおりやってできたのはできたんですが、どうにかクエリ一つで、できないものでしょうか?
質問に書いたとおり前には、条件式を増やすやり方ではムリでしょうか?ほんとうにすみません。

補足日時:2009/08/16 14:30
    • good
    • 0

A1合計:Dsum("[A1]","[シート名]","[cade]='" & [cade] & "' AND [国名]='" & [国名] & "'")



でしょうか?
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。色々とやってみます。

お礼日時:2009/08/18 23:05

他にも方法はあると思います(以下クエリの一例)



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
になります。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
数値が間違ってましたね・・・。
色々とやってみます。

お礼日時:2009/08/18 23:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング