• ベストアンサー

エクセルのクエリ テーブル結合

エクセル2000を使用しています。クエリのことがあまりよく判っていない質問かもしれませんが、外部ファイルとして以下のようなCSVファイルを2つ、クエリテーブルで結合したいのです。  A B 1 X Y 2 X Y と  A B 1 X Z 2 X Z を結合して  A B C 1 X Y Z 2 X Y Z のようにしたいのですがうまくいきません。 クエリについての超・基本的な質問かもしれませんが、ご教示頂けると助かります。宜しくお願いします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

データ/外部データの取り込み/新しいデータベースクエリ の事でしょうか? この機能で、直にテキストファイルに接続する事は(XL2000では)出来ない様ですので、一旦ワークシートに読み込む必要があります。また、MsQueryで取り扱うにはフィールド名が必要です。 ご希望の事は選択クエリの基本型だと思いますが、Ms Queryはフィールド名が同じでも、自動では結合してくれない様なので、自分で結合したいフィールドをドラッグして繋ぐ必要があります。下記URLをご参照下さい。Oracleに接続する例ですが、結合するあたりは、ワークシートでも同様です。 http://www.ie.reitaku-u.ac.jp/~ykago/lectures/db/odbc/odbc03.html 時々エラーがでて、接続出来ないときがありますので、下記をご参考にしてください。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter2.htm なお、ADOで直接テキストファイルに接続し、SQLでレコードセットを取得する事が出来ますが、複数のテキストファイルに接続して、選択クエリが出来るのかどうか、調べてみましたが分かりませんでした。(ご存じの方がいらしたら、是非教えてください) 以上、ご参考まで。

yqinhnn
質問者

補足

>mitarashi様 丁寧なご回答、ありがとうございます。 当方とあるWeb運用会社でありまして、Oracle、Accessなどデータベースソフトを使わない運用を目指していました。 なるほど、エクセルでは外部ファイル(解析ツールから吐き出されるCSVファイルのような)を直でマージすることは難しいようですね。

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

エクセルはデータベースのソフトではないので クエリとかリレーションとかの機能はありません。 もしCSVのファイルが既に開けていて Sheet1に  A B 1 X Y 2 X Y Sheet2に  A B 1 X Z 2 X Z があるとして Sheet3に  A B C 1 X Y Z 2 X Y Z 単に上から順に表示だけなら A      B      C =Sheet1!A1 =Sheet1!B1 =Sheet2!B1 下までコピイ 或いは Sheet1のC列に 直接 =Sheet2!B1 もしSheet1とSheet2のA列が重複しないキーとしてあるのであれば A      B      C =Sheet1!A1 =Sheet1!B1 =VLOOKUP(A1,Sheet2!A:B,2,FALSE) 或いは Sheet1のC列に 直接 =VLOOKUP(A1,Sheet2!A:B,2,FALSE) といった様に関数で埋めていきます。 詳しくはVLOOKUP関数のHelp参照してください。

yqinhnn
質問者

補足

>hallo-2007 ご回答ありがとうございます。 直接外部データ(CSVファイル)を、出来ればエクセルで扱いたいのです。運用者のレベルを考慮してエクセルで、と考えたのですが。。。

noname#204879
noname#204879
回答No.1

私自身は「クエリ」「クエリテーブル」の言葉も全く「判っていない」ので、この機会に、それらの意味を教えていただければ幸いです。 でも、例示された上2つ「ようなCSVファイルを2つ」(それぞれ、test1.csv、test2.csv とする)を3番目「のようにしたい」のなら、次のような手順で如何でしょうか? 1.新規ブックを開く(Sheet1!A1 がアクティブ状態) 2.[データ]→[外部データの取り込み]→[データの取り込み]を実行 3.test1.csv を探して[開く]をクリック 4.“カンマやタブなどの・・・に区切られたデータ”に目玉入れ 5.[次へ]をクリック 6.“カンマ”にチェック入れ 7.[完了]をクリック 8.“既存のワークシート”に目玉が入っており、その直下のボックス内に =$A$1 が表示されていることを確認 9.[OK]をクリック 10.セル C1 を選択 11.ステップ2~6の繰り返し。ただし、ステップ3の test1.csv を test2.csv に読み替え 12.[次へ]をクリック 13.左端列が反転していることを確認 14.右上の“削除する”に目玉入れ 15.ステップ7~9の繰り返し。ただし、ステップ8の =$A$1 を =$C$1 に読み替え 以上です。 「うまくいきません」とのことですが、貴方が実行した手順を示してください。(まさか、何もしていない?)

yqinhnn
質問者

補足

>mike_g ご回答ありがとうございます。 私が実行したやり方は 1.データ>外部データの取り込み>新しいデータベースクエリ 2.新規データソースの作成…外部CSVデータの取り込み 3.Microsoft Queryからテーブルの結合 です。結局3の部分で「うまくいきません」でした。A列に日付が入った、二つのCSVファイルだったのですが、同じテーブルに並べると日付の一つ一つに後から追加したテーブルの値が全て並ぶような形になってしまいます(判りづらいですね。説明が下手ですいません)。 データ量としてはそれほど多くない、運用者のレベルを低めに設定したい・けどなるべく簡単に処理できるよう細工をしておきたい、為、エクセルでこのようなことを試そうと考えました。やはり、何がしかのDB管理ソフトを使うか、処理の手間を取るか、しかないようです。

関連するQ&A

  • アクセスVBA テーブル名を変数とするクエリ実行・エクスポート

    テーブル X(フィールド1~30)を対象とするクエリ Yがあります。 クエリ Yは、フィールド1の値が BBBであるレコードの、フィールド3、5、7を抽出します。 クエリ Yの実行結果をエクセルファイル Zにエクスポートします。 Xと同一の構成である X1~X10という複数のテーブルから一つを選択して、クエリYを実行し て、エクセルファイル Zにエクスポートしたいのですが、VBAでは、どのように記述するのでしょうか? フォーム Fのテキストボックス Tに入力して、テーブルを指定(変数)したいのです。 上記が可能な場合、続けて Zにエクスポートすることはできるのでしょうか? エクスポート用のテーブルを一時的に作成しなければならないのでしょうか? 説明下手で申し訳ございません。お手数ですが、ご教示ください。よろしくお願いします。

  • ACCESSクエリでの結合の仕方

    ACCESS 2003を使用しています。 テーブルA テーブルB テーブルC の3テーブルでクエリを作っています。結合的には・・・ テーブルAのフィールドX⇔テーブルCのフィールドX テーブルBのフィールドX⇔テーブルCのフィールドX です。 これで3テーブルに共通する一致データのみ抽出はできるのですが、 3テーブルに共通する一致データに加えて、テーブルAとテーブルBの不一致データ(テーブルCに対する)も一緒に抽出できるようにしたいのです。 2テーブルだけの結合であれば、結合プロパティを、 テーブルAのフィールドX⇒テーブルCのフィールドX のようにすることで実現できるのですが、3テーブルの結合の場合、どのようにすればよいでしょうか? テーブルAのフィールドX⇒テーブルCのフィールドX テーブルBのフィールドX⇒テーブルCのフィールドX のようにしてみましたが、「あいまいな外部結合が含まれているので、SQLステートメントを実行できません。云々。。。」と警告エラーがでてしまいます。 どなたが、ご教授いただけると助かります。 ご面倒ですが、よろしくお願い致します。

  • テーブルを結合して新規にテーブルに・・・

    アクセス2003でSQLを組んでデータベースを作っています。 まず、ユニオンクエリを使ってAクエリとBクエリを結合しました。 この結合したものを新規にテーブルを作成したいのですが、どうすれば良いでしょうか? 手順を教えて頂ければ幸いです。 よろしくお願いします。

  • ACCESSクエリでの結合の仕方・・・SQL文かも

    ACCESS 2003を使用しています。 テーブルA テーブルB の2テーブルでクエリを作っています。 結合的には・・・ テーブルAのフィールドX ⇔ テーブルBのフィールドY です。 これで2テーブルに共通する一致データのみ抽出はできるのですが、 2テーブルに共通する一致データに加えて、 2テーブルの不一致データも一緒にクエリ表示されるようにしたいのです。 欲しいのは抽出イメージは、以下のような感じのクエリ結果です。 テーブルA:フィールドX|テーブルBのフィールドY a             |(空) (空)           |b c             |c d             |(空) (空)           |e f              |f  g             |(空) h             |h おそらく、SQL文を書く必要があるとは、想像できるのですが・・・ どなたか、ご教授いただけると助かります。 よろしくお願いします。

  • テーブルとテーブルを結合したい

    同じフィールドを持つテーブル同士のデータを結合して、別のテーブル又はクエリに表示させたいのですが、こんなことできますか?できるとすればどうすればよいのですか? 例:テーブルAの商品フィールドのデータとテーブルBの商品フィールドのデータを一つにまとめてテーブルC又はクエリCに表示させたい。

  • ACCESSでの外部結合について

    当方ACCESSの初心者です。 ACCESSで外部結合をしたいのですが、LEFT JOIN とRIGHT JOINの二種類しか 選択肢が有りません。左右両方の外部結合を行いたいのですが何か良い方法を ご存知の方がいらっしゃるようでしたら教えてください。 ほしい結果は以下の通りです。 テーブルA 製品1 在庫A 製品2 在庫B 製品3 在庫C テーブルB 製品2 売上X 製品3 売上Y 製品4 売上Z 結果 製品1 在庫A NULL 製品2 在庫B 売上X 製品3 在庫C 売上Y 製品4 NULL 売上Z

  • 異なる二つのテーブルの結合について・・・

    お世話になっております。 ちょっとややこしい質問になります。 「1」 Aと言うテーブルのAAと言うカラムから、$AAAと言うレコードを抽出致しました。ここまでは出来ました。(ここでの抽出結果を$CCCと致します。) 「2」 「1」の抽出結果($CCC)を元に、Bと言うテーブルのBBと言うカラムから、BBBと言うレコードも抽出し結合したいと考えております。 一番の問題は、「1」で出た結果(CCC)を元に、抽出する事が出来ません。 「1」のソースのみ完成してます。 $rs=$DB->query("SELECT * FROM `A` WHERE AA = '$AAA' ↑の抽出結果=$CCCを元に↓ $rs=$DB->query("SELECT * FROM `B` WHERE BB = '$CCC' 結合させたいんです!! セクションしているので結合できないとバラバラになってしまいます。。。。 ご教示お願い致します! inner join を使うのは分かるのですが・・・進めません。(泣)

    • ベストアンサー
    • MySQL
  • テーブルの結合について

    テーブルの結合について あるテーブルのサブクエリAがあるとして 抽出条件違いのサブクエリA’を 結合条件無しで(クロス結合で)、外部結合したいのですが そのようなことは可能でしょうか? サブクエリAのデータは残したいのです。 よろしくお願いします。

  • テーブルを結合

    テーブルの結合に関して質問します。 ネットなどでinner joinを使った複数のテーブル結合が参考として 書いてあったのですが(3つまで), 4つテーブルを結合する事は 出来るのでしょうか? A,B,CテーブルにはID,NAMEがあります。 DテーブルにはA,B,CテーブルのIDがあります。 参考サイトを見て3つのテーブルを結合するSQLが以下になります。 SELECT a.name, b.name, c.name FROM a INNER JOIN (b INNER JOIN c ON b.id = c.id) ON a.id = c.id よろしければアドバイスお願いします。

  • テーブル結合

    度々お世話になっています。 Mysqlのテーブル結合したいと思ってます。 テーブル構成は以下のとおりですのでご参照ください。 ■テーブルA id | name 1 | bind 2 | samba 3 | apache ■テーブルB id | detail 3 | test 3 | test 1 | test ■結合結果 id | count 1 | 1 2 | 0 3 | 2 テーブルA,Bはidコラムで紐づいています。 この際、テーブルBのidごとにレコード数を出力したいのですが、 どういったSQLを流せば良いでしょうか。 ご教示願います。

    • ベストアンサー
    • MySQL

専門家に質問してみよう