Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


977 / 2272 ツリー ←次へ | 前へ→

【9271】ACCESSでSUMPROCT関数のような機能 さち 07/4/9(月) 22:53 質問[未読]
【9273】Re:正規化NGなので厳しい たん 07/4/10(火) 9:49 回答[未読]
【9280】Re:正規化NGなので厳しい さち 07/4/11(水) 21:25 お礼[未読]

【9271】ACCESSでSUMPROCT関数のような機能
質問  さち  - 07/4/9(月) 22:53 -

引用なし
パスワード
   いつも参考にさせて頂いています。
テーブル1
No  AA  BB  CC   DD   EE・・・・・
111  2   1  0.5  1
222  3     1        0.5
333  1     1   1    
テーブル2
   3月 4月 5月 6月
AA  100 200 150 300
BB  200 150 120 200
CC  250 100 160 120
DD
EE


結果
  3月 4月 5月 6月
AA 600 1200 900 1800
 
テーブル1の列AAとテーブル2の行AAの数字を乗算して月ごとに表示したと思っています。テーブル1のNoは他のテーブルと整合性を持たせる為にユニークにする必要があります。クロス集計でもうまくいかず行き詰ってしましました。
EXCEL上でテーブル2を縦横逆にしてSUMPRODUCT関数で合計を出していましたが、ACCESSで合計を出す方法はないでしょうか?
宜しくお願いします。

【9273】Re:正規化NGなので厳しい
回答  たん  - 07/4/10(火) 9:49 -

引用なし
パスワード
   テーブル1のデータの持たせ方の時点でNGです。
Accessのようなデータベースというものは、
Excelのように、同じデータを横に伸ばして保存する事は
ありません。(正規化といいます)

テーブル1
No. 種別 数値
111 AA  2
111 BB  1
...
222 AA  3
222 CC  1
...
333 AA  1

テーブル2
種別 月 数値
AA  3  100
AA  4  200
...
BB  3  200
...

テーブル2を以下の様に出したいなら、クロス集計クエリで
>   3月 4月 5月 6月
>AA  100 200 150 300
>BB  200 150 120 200
>CC  250 100 160 120

テーブル1の種別単位の合計を出したいなら、集計クエリで、

あとは、両方のクエリを種別で結合させ、フィールド内で計算させれば
可能です。

そこまで変えるのが困難なのであれば、Accessではなく、
Excelで処理させた方が早いかもしれません。

【9280】Re:正規化NGなので厳しい
お礼  さち  - 07/4/11(水) 21:25 -

引用なし
パスワード
   ▼たん さん:
ご指導有難うございました。ひとりで考えていて諦め切れなかったのですが、ACCESSでの加工は諦めました。


>テーブル1のデータの持たせ方の時点でNGです。
>Accessのようなデータベースというものは、
>Excelのように、同じデータを横に伸ばして保存する事は
>ありません。(正規化といいます)
>
>テーブル1
>No. 種別 数値
>111 AA  2
>111 BB  1
>...
>222 AA  3
>222 CC  1
>...
>333 AA  1
>
>テーブル2
>種別 月 数値
>AA  3  100
>AA  4  200
>...
>BB  3  200
>...
>
>テーブル2を以下の様に出したいなら、クロス集計クエリで
>>   3月 4月 5月 6月
>>AA  100 200 150 300
>>BB  200 150 120 200
>>CC  250 100 160 120
>
>テーブル1の種別単位の合計を出したいなら、集計クエリで、
>
>あとは、両方のクエリを種別で結合させ、フィールド内で計算させれば
>可能です。
>
>そこまで変えるのが困難なのであれば、Accessではなく、
>Excelで処理させた方が早いかもしれません。

977 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free