2011-12-10 3 views
3

2つのExcelシートがあります。私は2つをマージして、一方の値が他方のものと一致するようにしなければならない。たとえば。共通の列を使用して2つのファイルを統合する

The first excel, the 2nd excel 

1 t     1 tes1 
2 5     3 tes3 
3 t     4 tes4 
4 g 

第二エクセル、2の最初の列に欠落していることに注意してくださいは、私は最初にExcelが次のようになりたい、

1 tes1 t 
2  5 
3 tes3 t 
4 tes4 g 

私はExcelに新しいです。これに関する助言は高く評価されます。

+1

あなたは、リレーショナルデータベース(例えばアクセス)ではなく、スプレッドシートをしたいような音。いずれにしても、この質問はSuperUser.comでよく聞かれます。 – Thomas

+0

ありがとうございました。私はそこに尋ねました。 – Indy

答えて

3
Sub left_join() 
Dim res As Variant 
Dim i As Long, lastUsedRowSh1 As Long, lastUsedRowSh2 As Long 
Dim cell As Range 
Sheets(3).Cells.ClearContents 
Sheets(1).Range("a:b").Copy Destination:=Sheets(3).Range("a1") 
Sheets(3).Columns(2).Insert Shift:=xlToRight 
lastUsedRowSh1 = Sheets(1).Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 
lastUsedRowSh2 = Sheets(2).Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 
i = 1 
For Each cell In Sheets(1).Range("a1:a" & lastUsedRowSh1) 
    On Error Resume Next 
    res = Application.WorksheetFunction.VLookup(cell.Value, Sheets(2).Range("a1:b" & lastUsedRowSh2), 2, 0) 
     If Err.Number = 0 Then 
      Sheets(3).Range("b" & i).Value = res 
      i = i + 1 
     Else 
      i = i + 1 
     End If 
Next cell 
End Sub 

単純な式でも解くことができます。

Foglio1

A B 
1 t 
2 5 
3 t 
4 g 

Foglio2

A B 
1 tes1 
3 tes3 
4 tes4 

Foglio3

コピーFoglio3でFoglio1の内容、そして

=IF(ISERROR(VLOOKUP(Foglio1!A1,Foglio2!$A$1:$B$3,2,0))=TRUE,"",VLOOKUP(Foglio1!A1,Foglio2!$A$1:$B$3,2,0)) 

この式を実行して、それを下にドラッグします。よろしく。

enter image description here

+0

答えの最初の部分とは何かを知っていません.Lol..canは詳しく説明します。 – Indy

+2

ExcelでADOとSQLを使用できます。左結合はここではうまくいくはずです。詳細情報:http://support.microsoft.com/kb/257819、StackOverflowでも。 – Fionnuala

関連する問題