SQLのようにExcelで2つのワークシートを結合するにはどうすればよいですか?


121

2つの異なるExcelファイルに2つのワークシートがあります。どちらにも、名前、ID番号、および関連データのリストが含まれています。1つは一般的な人口統計フィールドを含むマスターリストであり、もう1つは名前とID、および住所のみを含むリストです。このリストは、別のオフィスによってマスターリストから削減されました。

2番目のリストを使用して、最初のリストをフィルタリングします。さらに、マスターワークシートの他のフィールドと2番目のワークシートの住所フィールドを結果に含める必要があります。データベースの内部結合を使用してこれを非常に簡単に行う方法は知っていますが、Excelでこれを効率的に行う方法についてはあまりわかりません。Excelで2つのワークシートを結合するにはどうすればよいですか?外部結合も行う方法を示すためのボーナスポイント、およびマクロを必要とせずにこれを行う方法を知っていることを非常に好むでしょう。


1
私は、次のページに非常に便利を見つける:randomwok.com/excel/how-to-use-index-match
トミー・ブラボー

randomwok.com/excel/how-to-use-index-match =>特に最後の簡単な「リマインダー」:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
トミーブラボー

回答:


157

2007+使用する場合Data> From Other Sources> From Microsoft Query

  1. Excel Fileあなたの最初のエクセルを選択して選択してください
  2. 列を選択します
    (列のリストが表示されない場合は、必ずOptions> を確認してくださいSystem Tables
  3. 行くData> Connections>> [作成した接続を選択] Properties> Definition>Command text

これCommand textをSQLとして編集できるようになりました。どの構文がサポートされているかはわかりませんが、暗黙の結合、「内部結合」、「左結合」、およびすべてが機能する共用体を試しました。サンプルクエリを次に示します。

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2

1
パスのハードコーディングを回避する方法はありますか?相対パスは機能しますか?
レキン

25
追加のボーナスとして、Microsoft Queryを使用すると、Excelファイルを開いたりメッセージボックスを表示したりするための16ビットスタイルのコモンコントロールを体験できます。そうすれば、あなたが若い頃を思い出すことができます。:-)
エドワードブレイ

これはCSVファイルで機能しますか?MS Office Professional Plus 2010を使用していますが、ステップ3を実行する方法が表示されません-ステップ2のダイアログを停止したままにしますか?「接続」ダイアログに「新しい接続を選択」はありません。
ジョンフリーマン14

@JohnFreeman は、必要に応じて使用可能なオプションのいずれかを選択する必要があるため(「追加...」)
Aprillion 14

3
「このデータソースには表示可能なテーブルが含まれていません」というダイアログボックスが表示され、その後に「クエリウィザード-列の選択」ダイアログが表示される場合があります。それはからあるこのあなたが、その後、「オプション」ボタンをクリックして照会するデータを参照するために「システムテーブル」のチェックボックスをチェックするダイアログ。
トーラOdejayi

11

受け入れられた答えをサポートします。「列を選択する(列のリストが表示されない場合は、[オプション]> [システムテーブル]を必ず確認してください)」を強調したいだけです。

Excelファイルを選択するthis data source contains no visible tablesと、プロンプトが表示される可能性が高く、使用可能なタブと列はありません。Microsoft 、Excelファイルのタブが「システムテーブル」として扱われ、「システムテーブル」のオプションがデフォルトで選択されていないというバグ認めました。このステップでパニックにならないでください。「オプション」をクリックして「システムテーブル」をチェックするだけで、使用可能な列が表示されます。


8

VLOOKUPおよびHLOOKUPを使用して、一致する主キー(垂直または水平に格納)を検索し、「属性」列/行から値を返すことができます。


同じワークブック上のシートには非常に便利です(ただし、INDEX + MATCH関数はさらに便利です)、閉じた外部ワークブックからデータを更新する場合は少し複雑です
...-Aprillion

7

Excelの新しいバージョンで使用可能なMicrosoft Power Queryを使用できます(受け入れられている回答と似ていますが、はるかに簡単で簡単です)。Power Query呼び出しは「マージ」に参加します。

最も簡単な方法は、2つのExcelシートをExcelテーブルとして使用することです。次に、Excelで[Power Query]リボンタブに移動し、[Excelから]ボタンをクリックします。両方のテーブルをPower Queryにインポートしたら、1つを選択して[マージ]をクリックします。


3
他の提案されたオプションよりもはるかに簡単です。これが答えです!Power Queryは、Excel 2016の[ データ ]タブに含まれるようになりました。
SliverNinja-MSFT

1
😕Mac上に存在していないようだもう一つの特徴
juandesant

4

Microsoft Queryを使用したAprillionの回答は優れていると思いますが、Microsoft Accessを使用して、もっと簡単に見つけたデータシートに参加することに触発されました。

もちろん、MS Accessをインストールする必要があります。

手順:

  • 新しいAccessデータベースを作成します(またはスクラッチDBを使用します)。
  • Get External DataExcelデータを新しいテーブルとしてインポートするために使用します。
  • Relationshipsテーブルの結合方法を示すために使用します。
  • リレーションシップタイプを希望するものに合わせて設定します(左結合などを表す)
  • テーブルを結合する新しいクエリを作成します。
  • External Data->Export to Excel結果を生成するために使用します。

アプリリオンの素晴らしい答えがなければ、それは本当にできなかったでしょう。


今日までアクセスしたことはありませんが、これには10分しかかかりませんでした。インポートする代わりに、Excelの列を2つのテーブルにコピー/貼り付けました。
ジグガンジャー

3

Excel内からExcelテーブルでSQLスタイルの結合を実行することはできません。そうは言っても、あなたがやろうとしていることを達成する方法は複数あります。

Reubenが言うように、Excelでは、おそらく最適に機能する式はVLOOKUPand HLOOKUPです。どちらの場合も、一意の行で一致し、見つかったIDから指定された列\行の値を左\下に返します。

2番目のリストにいくつかのフィールドを追加するだけの場合は、2番目のリストに数式を追加します。「外部結合」スタイルのテーブルが必要な場合はVLOOKUP、最初のリストに式を追加してISNA、ルックアップが見つかったかどうかをテストします。特定のインスタンスでこれらを使用する方法について、Excelのヘルプで十分な詳細が提供されない場合は、お知らせください。

SQLを使用する場合は、データをデータベースプログラムにリンクし、クエリを作成して、結果をExcelにエクスポートします。(Accessでは、Excelワークシートまたは名前付き範囲をリンクテーブルとしてインポートできます。)


12
実際、できます
-Microsoft

3

XLTools.netでは、特にExcelテーブルに対するSQLクエリで動作するMSクエリの優れた代替手段を作成しました。XLTools SQL Queriesと呼ばれます。MS Queryよりも使用がはるかに簡単で、SQLを作成して実行する必要がある場合に非常にうまく機能します-VBAなし、MS Queryでの複雑な操作なし...

このツールを使用すると、埋め込みSQLエディターを使用してExcelブックのテーブルに対してSQLクエリを作成し、新しいワークシートまたは既存のワークシートに結果を表示するオプションを使用してすぐに実行できます。

LEFT OUTER JOINを含むほぼすべてのタイプの結合を使用できます(RIGHT OUTER JOINおよびFULL OUTER JOINのみがサポートされていません)。

以下に例を示します。

XLTools SQLクエリ-クエリビルダー


2

Excel 2007ユーザーの場合:データ>他のソースから> Microsoft Queryから> Excelファイルを参照します

この記事によると、XLSバージョン2003から照会すると、「このデータソースには表示可能なテーブルが含まれていません」という結果になる可能性があります。エラーはワークシートがSYSTEMテーブルとして扱われるためです。そのため、クエリを作成するときに[クエリウィザード-列の選択]ダイアログのオプションで[システムテーブル]を確認してください。

結合を定義するには:Microsoft Queryダイアログ> Tableメニュー> Joins ...

データを元のExcelシートに戻すには、Microsoft Queryダイアログ> Fileメニューから「Return data to Excel Sheet」を選択します。


0

データベースに精通している場合は、SQL Serverを使用して両方のワークシートをリンクサーバーとして接続し、T-SQLを使用してバックエンドデータの作業を行うことができます。次に、ExcelをSQLに接続し直し、データをテーブル(通常またはピボット)にプルします。Powerpivotの使用も検討できます。フラットデータベースとして使用されるExcelを含む、あらゆるデータベースソース間の結合が可能になります。


2
あなたは正しいですが、最初の質問はスプレッドシート(​​または2つ)を使用してデータベース機能を実行することに基づいているため、タスクを達成するための本当に効率的な方法はわかりません。
ダブ

0

同じ問題を探してRDBMergeに出会いました。これは、複数のExcelワークブック、csv、およびxmlファイルからのデータを要約ワークブックにマージするユーザーフレンドリーな方法だと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.