2016-02-02 6 views
6

VLOOKUPを使用して2つの異なるExcelスプレッドシートを内部結合する方法はありますか?Excelで内部結合する方法(例:VLOOKUPを使用)

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の他にこれを行う良い方法がありますか?

ありがとうございました。

+0

あなたはみてくださいましたか? '= VLOOKUP(Sheet2!A1、Sheet1!A:B、2、False) '両方のシートの列A:AはIDを保持し、シート1の列Bは名前を持ちます。それはシート2のB1に入り、コピーされます。 –

+0

IDを持つ列も返す方法はありますか? – PuggyLongLegs

+0

したがって、両方のシートで見つかったIDとシート1からの対応する名前だけを使用して新しいシートを作成しますか?用紙2に用紙1にないIDがある時間がありますか? –

答えて

3

まず、両方のテーブルに存在する値のリストを取得できます。あなたはその後、シート3にA2には、以下の式置くエクセル2010以降を使用している場合:あなたは2007またはそれ以前を使用している場合

=IFERROR(AGGREGATE(15,6,Sheet2!$A$1:$A$5000/(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000)>0),ROW(1:1)),"") 

を、この配列数式を使用します。

配列なので
=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

+0

ありがとうございます。行をコピーするとどういう意味ですか? – PuggyLongLegs

+0

@PuggyLongLegs数式を必要なだけ下にドラッグします。ドラッグすると、数式がコピーされ、参照が変更されます。 –

+0

私は[this](http://i.imgur.com/pjckRSj.png)でしたが、私がenterを押すと何も起こりませんでした。私はまったく同じSheet1とSheet2を持っています。 – PuggyLongLegs

1

は、Microsoftクエリを使用して、この結果をacheiveすることができます。

まず、 "Excelファイル*" を選択しData > From other sources > From Microsoft Query

enter image description here

を選択します。

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

次に、クエリウィザードウィンドウで、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

+0

ありがとうございますが、私の問題は、これらのすべてをJava(JDBC&Apache POIを使用)を使用して行う必要があることです。 Excelが単独で行うことは、Javaコードの計算結果とロジックを表示することだけです。 – PuggyLongLegs

+0

これをテンプレートワークブックに配置してから、計算結果を表示する前に「すべて更新」を呼び出すことができます。 – Seb

+0

しかし、テーブル、列、条件は動的です。プログラムを実行するたびにJavaでテンプレートワークブックを手動で作成できない限り、 – PuggyLongLegs

関連する問題