web-dev-qa-db-ja.com

Excelで内部結合する方法(例:VLOOKUPを使用)

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以外にこれを行うより良い方法はありますか?

ありがとう。

8
Wabbage

まず、両方のテーブルに存在する値のリストを取得します。 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の値が返されます。

enter image description here

4
Scott Craner

Microsoft Queryを使用してこの結果を達成できます。

まず、Data > From other sources > From Microsoft Query

enter image description here

次に、「Excelファイル*」を選択します。

「ワークブックの選択」ウィンドウで、現在のワークブックを選択する必要があります。

次に、クエリWizardウィンドウで、sheet1 $とsheet2 $を選択し、「>」ボタンをクリックします。 enter image description here

[次へ]をクリックすると、クエリビジュアルエディターが開きます。

[SQL]ボタンをクリックして、次のクエリを貼り付けます。

SELECT `Sheet1$`.ID, `Sheet1$`.Name, `Sheet2$`.Age
FROM`Sheet1$`, `Sheet2$`
WHERE `Sheet1$`.ID = `Sheet2$`.ID

最後にエディターを閉じ、必要な場所にテーブルを配置します。

結果は次のようになります: enter image description here

3
Seb

フォーマルまたはExcelマクロを使用しない基本的なExcel結合の場合。ウェブサイトを確認してください http://exceljoins.blogspot.com/2013/10/Excel-inner-join.html

結合は、まれに使用される左外部、右外部、完全外部が可能ですが、Excelシートでこれを実現できます。詳細については、以下を確認してください http://exceljoins.blogspot.com/

0
App Review