2つの異なるExcelファイルに2つのワークシートがあります。どちらも名前、ID番号、および関連データのリストを含みます。 1つは一般的な人口統計フィールドを含むマスターリスト、もう1つは名前とID、および住所のみを含むリストです。このリストは他の事務所によってマスターリストから削除されました。
2番目のリストを使用して最初のリストをフィルタリングします。さらに、2番目のワークシートの住所フィールドと共に、マスターワークシートの他のフィールドも結果に含めるようにします。データベース内部結合を使用してこれを非常に簡単に実行できる方法はわかっていますが、Excelでこれを効率的に実行する方法についてはあまり明確ではありません。 Excelで2つのワークシートを結合する方法外部結合を行う方法を示すこともボーナスポイントであり、マクロを必要とせずにこれを行う方法を知っていることを強くお勧めします。
2007+の場合はData
> From Other Sources
> From Microsoft Query
を使用してください。
Excel File
を選択して最初のExcelを選択してくださいOptions
> System Tables
を確認してください)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
受け入れられた答えを支持しなさい。 「列を選択してください(列のリストが表示されない場合は、[オプション]> [システムテーブル]を必ず確認してください)
Excelファイルを選択すると、おそらくthis data source contains no visible tables
プロンプトが表示され、利用可能なタブと列はなくなります。 Microsoft は、Excelファイルのタブが "システムテーブル"として扱われ、 "システムテーブル"のオプションが選択されていないというバグ であることを認めましたデフォルトでそれで、このステップで慌てないでください、あなたはただ「オプション」をクリックして、そして「システムテーブル」をチェックする必要があります、そしてあなたは利用可能な列を見るでしょう。
VLOOKUPとHLOOKUPは、一致する主キー(垂直または水平に格納されている)を検索し、 'attribute'列/行から値を返すために使用できます。
Microsoft Power Queryを使用できます。これは、新しいバージョンのExcelで使用できます(一般的な回答と似ていますが、はるかに単純で簡単です)。 Power Query呼び出しは「マージ」を結合します。
最も簡単な方法は、2つのExcelシートをExcelテーブルとして用意することです。次にExcelで[Power Query]リボンタブに移動し、[From Excel]ボタンをクリックします。両方のテーブルをPower Queryにインポートしたら、いずれかを選択して[結合]をクリックします。
Excel内からExcelテーブルにSQLスタイルの結合を実行することはできません。そうは言っても、あなたがやろうとしていることを成し遂げるには複数の方法があります。
Reubenが言っているように、Excelでは、おそらく最もうまくいく式はVLOOKUP
とHLOOKUP
です。どちらの場合も、一意の行で一致し、見つかったIDの左側の指定した列\ rowの値を返します。
2番目のリストに2つ以上のフィールドを追加するだけの場合は、2番目のリストに式を追加します。 「外部結合」スタイルの表が必要な場合は、検索が見つかったかどうかをテストするためにVLOOKUP
を指定して最初のリストにISNA
式を追加します。 Excelのヘルプで特定のインスタンスでこれらを使用する方法について十分な詳細情報が得られない場合は、お知らせください。
SQLを使用する場合は、データをデータベースプログラムにリンクし、クエリを作成して結果をExcelにエクスポートします。 (Accessでは、Excelワークシートまたは名前付き範囲をリンクテーブルとしてインポートできます。)
Microsoft Queryを使用したAprillionの回答は優れていると思いますが、Microsoft Accessを使用して、はるかに簡単なデータシートに参加することができました。
もちろんMS Accessがインストールされている必要があります。
ステップ:
Get External Data
を使用します。Relationships
を使用します。External Data->Export to Excel
を使用してください。Aprillionのすばらしい答えがなければ、私は本当にそれができなかったでしょう。
XLTools.netでは、MS QueryがExcelテーブルに対するSQLクエリで特に機能するための優れた代替手段を作成しました。これは XLTools SQL Queries と呼ばれます。 MS Queryよりもはるかに使いやすく、SQLを作成して実行するだけの場合は非常にうまく機能します。VBAやMS Queryを使用した複雑な操作は不要です。
このツールを使用すると、埋め込みSQLエディタを使用してExcelワークブック内のテーブルに対して任意のSQLクエリを作成し、新規または既存のワークシートに結果を表示するオプションを指定してすぐに実行できます。
LEFT OUTER JOIN(RIGHT OUTER JOINとFULL OUTER JOINのみがサポートされていません)を含むほとんどすべての種類の結合を使用できます。
これが一例です。
Excel 2007ユーザーの場合:データ>他のソースから> Microsoft Queryから> Excelファイルを参照
この記事のによると、XLSバージョン2003から照会すると、「このデータソースには可視のテーブルが含まれていません」という結果になる可能性があります。ワークシートはSYSTEMテーブルとして扱われるため、エラーが発生します。そのため、クエリを作成するときに[クエリWizard - 列の選択]ダイアログのオプションの[システムテーブル]を確認してください。
結合を定義するには、次のようにします。[Microsoft Query]ダイアログ> [テーブル]メニュー> [結合] ...
元のExcelシートにデータを返すには、[Microsoft Query]ダイアログボックスの[ファイル]メニューから[Excelシートにデータを返す]を選択します。
データベースに精通している場合は、SQL Serverを使用して両方のワークシートをリンクサーバーとして接続してから、T-SQLを使用してバックエンドデータの作業を行うことができます。その後、ExcelをSQLに接続してデータをテーブル(通常またはピボット)に格納します。 Powerpivotの使用を検討することもできます。フラットデータベースとして使用されるExcelを含む、あらゆるデータベースソース間の結合が可能になります。
私が遭遇したのと同じ問題を探しています RDBMerge 、これは複数のExcelワークブック、csvファイルおよびxmlファイルからのデータをにマージするためのユーザーフレンドリーな方法であると思いますサマリーワークブック。