10秒目をつむったら…

エクセル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

のようにしたいのですがうまくいきません。

クエリについての超・基本的な質問かもしれませんが、ご教示頂けると助かります。宜しくお願いします。

A 回答 (3件)

データ/外部データの取り込み/新しいデータベースクエリ


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

この回答への補足

>mitarashi様
丁寧なご回答、ありがとうございます。

当方とあるWeb運用会社でありまして、Oracle、Accessなどデータベースソフトを使わない運用を目指していました。

なるほど、エクセルでは外部ファイル(解析ツールから吐き出されるCSVファイルのような)を直でマージすることは難しいようですね。

補足日時:2008/07/29 08:27
    • good
    • 0

エクセルはデータベースのソフトではないので


クエリとかリレーションとかの機能はありません。
もし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参照してください。

この回答への補足

>hallo-2007
ご回答ありがとうございます。

直接外部データ(CSVファイル)を、出来ればエクセルで扱いたいのです。運用者のレベルを考慮してエクセルで、と考えたのですが。。。

補足日時:2008/07/29 08:34
    • good
    • 0

私自身は「クエリ」「クエリテーブル」の言葉も全く「判っていない」ので、この機会に、それらの意味を教えていただければ幸いです。



でも、例示された上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 に読み替え

以上です。

「うまくいきません」とのことですが、貴方が実行した手順を示してください。(まさか、何もしていない?)

この回答への補足

>mike_g
ご回答ありがとうございます。

私が実行したやり方は

1.データ>外部データの取り込み>新しいデータベースクエリ
2.新規データソースの作成…外部CSVデータの取り込み
3.Microsoft Queryからテーブルの結合

です。結局3の部分で「うまくいきません」でした。A列に日付が入った、二つのCSVファイルだったのですが、同じテーブルに並べると日付の一つ一つに後から追加したテーブルの値が全て並ぶような形になってしまいます(判りづらいですね。説明が下手ですいません)。

データ量としてはそれほど多くない、運用者のレベルを低めに設定したい・けどなるべく簡単に処理できるよう細工をしておきたい、為、エクセルでこのようなことを試そうと考えました。やはり、何がしかのDB管理ソフトを使うか、処理の手間を取るか、しかないようです。

補足日時:2008/07/29 08:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!