VLOOKUPを使用して2つの異なるExcelスプレッドシートを内部結合する方法はありますか?
SQLでは、次のようにします。
SELECT id, name
FROM Sheet1
INNER JOIN Sheet2
ON Sheet1.id = Sheet2.id;
シート1:
+----+------+
| ID | Name |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
+----+------+
Sheet2:
+----+-----+
| ID | Age |
+----+-----+
| 1 | 20 |
| 2 | 21 |
| 4 | 22 |
+----+-----+
結果は次のようになります:
+----+------+
| ID | Name |
+----+------+
| 1 | A |
| 2 | B |
| 4 | D |
+----+------+
VLOOKUPでこれを行うにはどうすればよいですか?または、VLOOKUP以外にこれを行うより良い方法はありますか?
ありがとう。
まず、両方のテーブルに存在する値のリストを取得します。 Excel 2010以降を使用している場合は、シート3 A2に次の式を入力します。
=IFERROR(AGGREGATE(15,6,Sheet2!$A$1:$A$5000/(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000)>0),ROW(1:1)),"")
2007以前を使用している場合は、次の配列数式を使用します。
=IFERROR(SMALL(IF(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000),Sheet2!$A$1:$A$5000),ROW(1:1)),"")
配列数式で、コピーして数式バーに貼り付け、EnterまたはTabの代わりにCtrl-Shift-Enterを押して編集モードを終了します。
次に、必要な数の行をコピーします。これにより、両方のリストにあるIDのリストが作成されます。これはIDがテキストではなく数値であることを前提としています。
次に、そのリストでvlookupを使用します。
=IF(A2<>"",VLOOKUP(A2,Sheet1!A:B,2,FALSE),"")
これにより、一致するシート1の値が返されます。
Microsoft Queryを使用してこの結果を達成できます。
まず、Data > From other sources > From Microsoft Query
次に、「Excelファイル*」を選択します。
「ワークブックの選択」ウィンドウで、現在のワークブックを選択する必要があります。
次に、クエリWizardウィンドウで、sheet1 $とsheet2 $を選択し、「>」ボタンをクリックします。
[次へ]をクリックすると、クエリビジュアルエディターが開きます。
[SQL]ボタンをクリックして、次のクエリを貼り付けます。
SELECT `Sheet1$`.ID, `Sheet1$`.Name, `Sheet2$`.Age
FROM`Sheet1$`, `Sheet2$`
WHERE `Sheet1$`.ID = `Sheet2$`.ID
最後にエディターを閉じ、必要な場所にテーブルを配置します。
フォーマルまたはExcelマクロを使用しない基本的なExcel結合の場合。ウェブサイトを確認してください http://exceljoins.blogspot.com/2013/10/Excel-inner-join.html
結合は、まれに使用される左外部、右外部、完全外部が可能ですが、Excelシートでこれを実現できます。詳細については、以下を確認してください http://exceljoins.blogspot.com/