• 締切済み

Access2010で既存テーブルにインポート

今、Access2003で、商品販売データ(CSV)をインポートし、店舗コード表テーブルとクエリで付け合わせし、販売店名付きの商品販売データをEXCEL形式でエクスポートするといった簡単な作業を行っています。 この商品販売データ(CSV)は販売した商品のデータの為、毎月フィールド構成が必ずしも一定しないという特長があります。 また、CSVの数も毎月30社分以上ありますが、一定しません。大方は毎月ありますが、一部は、あったりなっかたりします。 例えば ・A社の商品について9月には商品「イ・ロ・ハ」が全店舗で販売されましたが、、10月には「イ・ハ・ニ」だけ売られた。「ロ」は売れておらず、前月売れなかった「ニ」が売れました。 ・B社の商品について9月には商品「ト」を売りましたが、10月にはどの店舗でもB社の商品は販売されていない。 といった具合です。 Access2003でこれを行っていますが、やり方は以下のとおりです。 (1)今まで販売された会社の分だけテーブルおよび結合の為のクエリを前もって作成し。 (2)インポートウイザードで進んでいき最後の方で新規テーブルか既存テーブルか選択するところで「既存」を選択し、CSVに対応したテーブルを選択。 (3)フィールド構成が合ってればそのままインポートが完了する。 (4)フィールド構成が合ってなければ、ひとつ戻って「新規」に切り替え進んでいく。最後の方では(3)で選んだテーブル名が残ってるので、そのまま上書きで完了する。 (5)「(1)」で新たに会社が増えた場合は2・3カ月様子を見て継続してデータが発生するようならテーブルを作成。同時にクエリ等も作成 ・・・といった具合になります。 今度、会社のPC更改に伴い、Accessのバージョンが2010になるのですが、試してみたところ、2010はインポート先テーブルが「既存」か「新規」かを選択する部分が最初に来ます。 その為最後の方でフィールド構成が合わなかった場合、最初からやりなおしになり、既存のテーブル名を生かせす、入力しなおしになります。 今は、既存テーブル名を前もって覚えさせて、そこからコピペするくらいしか思いつかないのですが何かいい方法はありませんか? ご存知の方がいらっしゃいましたらよろしくお願いします。

みんなの回答

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

Access2003で、商品販売データ(CSV)をインポートし、 店舗コード表テーブルとクエリで付け合わせし、 販売店名付きの商品販売データをEXCEL形式で エクスポートするといった簡単な作業を行っています。 -------------------------------------------------- ご質問の趣旨はエクセルの店舗コードにより、販売店名を 貼り付ける簡単な方法を提案しました。 エクセルでは数式を一つ作ればこの数式を他の場所にコピペ で完成しますね、 このエクセルデータをAccessでインポートするのは如何でしょう Access側でやる方法 リレーションシップをご存知ですね 「店舗コード表」テーブルには ・店舗コード(主キーまたはユニーク設定) ・販売店名(ユニーク設定が望ましい) 上記二つのフィールドを含んでいることが前提ですが インポートしたエクセルのテーブルのコードと店舗コード をリレーションで結んで、必要な項目選択したクエリは 他のテーブルと同じように取り扱うことができます。 勿論EXCELへエキスポートも出来ます。 >一定していないフィールドの最後には「合計」が存在し、 >それも必要になります。それだと、「合計」の置かれてる >列の値が毎回違うし、毎回いちいち指定しなければなりません。 >30以上もある数のファイルで。 Excelもそうですが、Accessも同じ列でないとSUM関数は使えません また、Accessの場合金額欄に一つでも空白またはテキストがあれば SUM()関数は使えませんし、加減乗除算もしてくれません フィールドの位置をダミーを使ってでも一定にすることは出来ませんか そのため、テーブルデザインで数値欄の規定値を0(ゼロ)にします。 また「合計」フィールドとして持つのではなく、 出力(フォームまたはレポート)の時に計算します。 でないと数値を変更する都度合計値も変更しなければなりません。 レコード内の横の計算は選択クエリーno フィールド欄に 金額:数量*単価とします。 これでクエリを開くと数量*単価の計算結果が表示されますし フォームまたはレポートのボックスのレコードソースになります

pgg500
質問者

お礼

なまじ「合計」と書いた為に、求めてない方向に暴走されてしまいましたね。 やってる仕事内容をいちいち全部ここに書くわけにはいかないので「例えば」の話で書いているのに、質問内容と違う事ばかり書かれてしまっては、もう謝るしかないですね。 私がバカでごめんなさい。でもありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

No.1です Sheet2の店舗表は、新規の店舗の追加等で、 店舗コード表を変更しても有効です。 そのため範囲指定は余分に設定して下さい。

pgg500
質問者

お礼

ありがとうございました。 たしかにおっしゃるやり方でもできるでしょう。 残念ですが私の知りたい内容ではありませんでした。 まさか、質問内容と違う回答をいただくとは思ってなかったので細かいとこまではあえて書きませんでしたが、一定していないフィールドの最後には「合計」が存在し、それも必要になります。それだと、「合計」の置かれてる列の値が毎回違うし、毎回いちいち指定しなければなりません。30以上もある数のファイルで。 それが面倒だからアクセスを使ってるわけです。 何も「アクセスでできないから他に方法がないか?」聞いていたわけではなく、インポートの際、既存テーブルの名前を生かす方法が知りたかっただけです。 予断ですが、出来上がった結果は、そこで終わりではなく、さらに別の集計に結果を反映させなければいけません。仕事とはそういうものです。 ご指定のやり方ですと、Sheet1の内容を手作業でコピペしにいかなければならないんじゃありませんか? 要は「手間の軽減」=「結果が出るまでの時間短縮」です。 ありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

販売店舗名を商品販売表に貼り付けるだけなら アクセスは必要ありません。 エクセルだけで出来ます。 Vlookup関数を使います。 別のワークシートにACCESSの店舗コード表を展開します。 Sheet2のA列が店舗コード、B列が販売店名とします。 A2に店舗コードでB2に販売店名貼り付けるには B2に =VLOOKUP(A2,Sheet2!$A$2:$B$72,2,FALSE) ご存知と思いますが、この数式は数式バーの左にあるfxから入ってください 参照範囲は絶対アドレスにするために範囲指定後F4を押下します。

関連するQ&A