• ベストアンサー

アクセス 複数データの変換

アクセス、またはエクセルで、テーブルのデータを、ほかのテーブルを参照にして、一括で変化する方法を教えてください。 具体的には、一つのテーブルに a b c a b d e f b d f g h となっているデータがあって、もう一つのテーブルに a apple b lemon c orange となっている場合に、最初のテーブルのデータをすべて、その対応する第二テーブルの内容に変換する方法です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.3

こんにちは。 そうですか。フィールドが沢山あるんですか。私なら、あまりフィールドが多いようなら、一度Excelにエクスポートして、[置換]してから再びインポートます。 ・変換したい文字の種類>フィールド数→クエリの多数作成 ・変換したい文字の種類<フィールド数→Excelで[置換] ですかね。Excel、AccessどちらでもVBAで処理を自動化する方法もありますが、一度だけの作業なら今からVBAを勉強するより、これぐらいは手作業でやった方が良いでしょう。毎日変換する必要があるなら、それはテーブル構造を考えた方が良いです。そもそも、Accessでそういうデータの関係のはおかしいということです。

akinopy
質問者

お礼

やはり、無理なんですね。 変換したい文字の種類>フィールド数 なので、クエリで処理して、なんとかできました。 いろいろとありがとうございました。

その他の回答 (2)

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.2

そういうことでしたら、更新クエリじゃなく、選択クエリとテーブル作成クエリでやるのがいいかと思います。 (1)テーブル1の[フィールド1]とテーブル2の[フィールド1]を結合させて、テーブル2の[フィールド2]、テーブル1の[フィールド2]、テーブル1の[フィールド3]の3つのフィールドを持つ選択クエリ、クエリ1を作成します。 [クエリ1]選択クエリ テーブル2.フィールド2   テーブル1.フィールド2   フィールド3    apple            b                  c    apple            b                  d    lemon            c                  c (2)クエリ1の[テーブル1.フィールド2]とテーブル2の[フィールド1]を結合させてクエリ1の[テーブル2.フィールド2]、テーブル2の[フィールド2]、クエリ1の[フィールド3]の3つを持つ選択クエリ、クエリ2を作成します。 [クエリ2]選択クエリ クエリ1.テーブル2.フィールド2   テーブル1.フィールド2   フィールド3    apple                 lemon                  c    apple                 lemon                  d    lemon                 orange                  c (3)クエリ2の[フィールド3]とテーブル2の[フィールド1]を結合させてクエリ2の[クエリ1.テーブル2.フィールド2]、クエリ2の[テーブル2.フィールド2]、テーブル2の[フィールド2]の3つを持つ選択クエリ、クエリ3を作成します。 [クエリ3]選択クエリ クエリ1.テーブル2.フィールド2   クエリ2.テーブル1.フィールド2   フィールド3    apple                   lemon                  orange    apple                   lemon                  grape    lemon                   orange                  orange (4)クエリ3をデザインビューで開き、メニューのクエリから、テーブル作成クエリに変更し新しく変更後のテーブルの名前を設定し、クエリを実行すると、新しくテーブルが作成されます。

akinopy
質問者

補足

丁寧な説明ありがとうございます。 でも、フィールドごとに、作業がいるわけですね。 実際のデータは、結構な数のフィールドがあるので 一発で変換できないかと、考えたのですが、 それは無理なんでしょうか。

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.1

クエリはご存知ですか? 更新クエリでできますよ。 テーブル1 フィールド1      フィールド2   a           b c   a           b d e f   b           d f g h テーブル2 フィールド1      フィールド2   a           apple   b           lemon   c           orange の場合だと、更新クエリの[レコードの更新]欄は DLookUp("フィールド2 ","テーブル2","フィールド1='" & [テーブル1]![フィールド1] & "'") という式を入れます。それを実行すると テーブル1 フィールド1      フィールド2   a           apple   a           apple   b           lemon とテーブル1の内容が更新されます。 不慣れな時は間違いが起こり易く、ちょっとした式の間違いでデータが消えてしまったりするので、更新クエリを実行する前に、更新したいテーブルのコピーを作って置いたほうが無難だと思います。

akinopy
質問者

補足

回答ありがとうございます。 ちょっと説明不足でした。 テーブル1は フィールドが次のように3つに分かれているとして、 a   b   c a   b   d b   c   c 返還後は、 apple  lemon   orange apple   lemon  grape lemon   orange  orange となる感じです。 クエリは少しは触るのですが、関数はよくわかりません。 よろしくお願いします。