- ベストアンサー
Accessのデータの作り方を教えてください。
Accessでデータが思ったように作れないので、教えていただけないでしょうか。 Excelのデータをテーブルにインポート: 縦(列)に「店コード」が1~10まであり、次の列に「店名」があります。その次の列に、商品Aの売り上げ個数が各店に対応してあります。 次の列には商品B、商品C、商品Dまであります。 その商品の単価が、例えば、商品A:¥100 商品B:¥150 商品C:¥200 商品D:¥250 とします。 そのデータをクエリで、 各店のそれぞれの商品の売り上げ個数×商品の値段 というかたりで、買う点のそれぞれの商品の売り上げの値段だけを 表示させたいのですが、できません。 どなたか教えていただけないでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Accessはデータベースですから表計算であるExcelとは違った考え方をしなければなりません Accessでアップされたことを処理するには [店マスタ](店コード、店名) [商品マスタ](商品コード、商品名、単価) [売上](店コード、商品コード、個数) のようなテーブル構成で処理します Excelからインポートしたものを上のようなテーブルに組み替える ということから始めることになりますね >次の列には商品B、商品C、商品Dまであります。 このように横に並んでいるものを組み替えるにはユニオンクエリを使います
その他の回答 (4)
- CHRONOS_0
- ベストアンサー率54% (457/838)
並び順を指定しない場合は、Accessにお任せになってしまいます 商品コードを並べたい順番になるように付加し 商品コードで並び替えを指定してください
お礼
何度も、ご親切にお答えいただきありがとうございました。 これからの参考にしていきます。
- Dxak
- ベストアンサー率34% (510/1465)
#1です > フィールドに総合計:[商品A]+[商品B]+[商品C]+[商品D] > という計算の仕方があるとは思いますが、 > 実際商品がA~Dではなく、実際は、20商品ぐらいあるので、 > 別の計算方法があれば教えていただけないでしょうか? 言うとおり、単純に足し算を追加して行く以外に手がAccの場合、ほぼ無いです VBAで関数を作るって手が無いわけでは無いのですが、通常はそっちの手は、手間が掛るのと処理速度が遅くなるので、特別に理由が無いかぎり使用しません 縦の計算は簡単に出来るAccですが横の計算は苦手です #2さんが、#3で、お答えしているようにデータを縦にデータベース化し、クロス集計して元のような縦横表を作成するのがAccでは一般的になります
お礼
ありがとうございました。 大変参考になりました。 今後、教えていただいたSQLを利用していきたいと思います。 このような素人の質問のために お時間を割いてくださり、ありがとうございました。
- CHRONOS_0
- ベストアンサー率54% (457/838)
Exelの表は 店コード 店名 商品A 商品B 商品C 商品D のようになっているわけですよね これをそのままインポートします インポートしたテーブルから店コードと店名だけを重複無しに取り出すクエリを作り これをテーブル作成クエリに変えて走らせれば >[店マスタ](店コード、店名) ができます >[商品マスタ](商品コード、商品名、単価) はAccessで一から作ってください 商品は4つですから簡単ですね たとえば 商品コード 商品名 単価 1 商品A 100 2 商品B 150 3 商品C 200 4 商品D 250 次にインポートしたテーブルからユニオンクエリを作ります select 店コード,1 as 商品コード,商品A as 個数 from インポートしたテーブル union all select 店コード,2 as 商品コード,商品B as 個数 from インポートしたテーブル union all select 店コード,3 as 商品コード,商品C as 個数 from インポートしたテーブル union all select 店コード,4 as 商品コード,商品D as 個数 from インポートしたテーブル このユニオンクエリからすべてを取り出すクエリを作り テーブル作成クエリに変えると >[売上](店コード、商品コード、個数) ができます 3つのテーブルの同じ名前のフィールド同志でリレーションシップを設定します
補足
質問に答えてくださりありがとうございました。 教えていただいた通り、テーブルを組み替えることができました。 そして、テーブルを組み替えてたあと、 単価をかけて、計算することができました。 ただ、商品名をテーブルでインポートをした順番どおりに したいのですが、値段の昇順や降順になってしまいます。 もし、お時間がありましたら、Excelからインポートしたままの 順番になるような設定を教えていただけないでしょうか?
- Dxak
- ベストアンサー率34% (510/1465)
テーブル名も書いてないので、とりあえず「Tbl_店舗売上げ」と言うテーブル名と前提して、SQL文(クエリ作成で、「表示」-「SQLビュー」で見たクエリの文章)が SELECT Tbl_店舗売上げ.店コード, Tbl_店舗売上げ.店名, [商品A]*100 AS 売上額A, [商品B]*150 AS 売上額B, [商品C]*200 AS 売上額C, [商品D]*250 AS 売上額D FROM Tbl_店舗売上げ; と、なるって事かな? これなら、Accessじゃなくて、Excelのまま行ったほうが良くない? 何か、Accessでやる必要が、どこかにあったのかな? あるなら、テーブルの構造から組みなおした方が良さそうだけど^^;
お礼
返事が遅くなってしまい、申し訳ありませんでした。 SQLのクエリの文章を教えていただいたため、 思い描いていたデータに近いものができました。 ありがとうございました。 もうひとつお聞きしたいことが・・・ 店別にそれぞれの商品の売上額を合計した総合計を出したいのですが、 フィールドに総合計:[商品A]+[商品B]+[商品C]+[商品D] という計算の仕方があるとは思いますが、 実際商品がA~Dではなく、実際は、20商品ぐらいあるので、 別の計算方法があれば教えていただけないでしょうか? お時間があれば、よろしくお願いします。
お礼
返事が遅くなってしまい、申し訳ありません。 参考にさせていただきました。ありがとうございました。 教えていただいた通り、それぞれのテーブルを作りました。 そのあと、組み替えをするために、 ユニオンクエリのことを調べて、組み替えに挑戦をしたのですが、 なかなか思うようにいきませんでした。 http://www.ne.jp/asahi/chronos/labo/Excel2Access/E2A_P1.htm (勝手にアドレスを載せてよいかわかりませんが・・) このサイトを参考にして作ってみたのですが、 店名が全て、同じコードになったしまったり、 まったく、それぞれの商品=個数×単価ができませんでした。 もし、他に、参考になるサイトや参考書などがありましたら、 教えていただけないでしょうか。 勝手ばかり言って、申し訳ありません。