他の方が答えておられる関数で問題なければ、いいのですが、マクロを組みました。
このマクロは、質問以上のことをしてしまっています。
質問以上、というのは、重複したものだけでなく、「シート3」にすべての一覧を作成しています。
従って、重複したものだけ必要な場合は、この回答は無視してください。
Option Explicit
Sub Test()
Dim s1, s2, s3 As Worksheet
Dim i, j, r, t As Long
Dim c As Integer
Set s1 = Worksheets(1)
Set s2 = Worksheets(2)
Set s3 = Worksheets(3)
r = 1
For i = 2 To s1.Range("A1").End(xlDown).Row
t = s1.Cells(i, 2).Value
For j = 2 To s2.Range("A1").End(xlDown).Row
If s1.Cells(i, 1).Value = s2.Cells(j, 1).Value Then
t = t + s2.Cells(j, 2).Value
End If
Next j
r = r + 1
s3.Cells(r, 1).Value = s1.Cells(i, 1).Value
s3.Cells(r, 2).Value = t
Next i
For i = 2 To s2.Range("A1").End(xlDown).Row
c = 0
For j = 2 To s1.Range("A1").End(xlDown).Row
If s2.Cells(i, 1).Value = s1.Cells(j, 1).Value Then
c = 1
End If
Next j
If c = 0 Then
r = r + 1
s3.Cells(r, 1).Value = s2.Cells(i, 1).Value
s3.Cells(r, 2).Value = s2.Cells(i, 2).Value
End If
Next i
End Sub
まず、マクロを実行するまでを念のため。
目的のエクセルファイルを開いて、「Alt+F11」(Alt(「オルト」と読みます)キーを押しながら、「F11」キーを押す)。
すると、Visual Basicの画面が出てきますので、メニューの「挿入」から「標準モジュール」をクリック。
右側の広い部分が白くなったと思いますので、そこに以下のマクロをコピー&ペーストして、あとは、「F5」で実行するだけです。
前提条件としては、すべてのシートで1行目は項目行で、実際のデータは2行目から。
それから、2行目以降に、空白セルがないこと。
最後に、シートは、すでに3つ存在していることです。
Option Explicit
Sub Test()
Dim s1, s2, s3 As Worksheet
Dim i, j, r, t As Long
Dim c As Integer
Set s1 = Worksheets(1)
Set s2 = Worksheets(2)
Set s3 = Worksheets(3)
r = 1
For i = 2 To s1.Range("A1").End(xlDown).Row
t = s1.Cells(i, 2).Value
For j = 2 To s2.Range("A1").End(xlDown).Row
If s1.Cells(i, 1).Value = s2.Cells(j, 1).Value Then
t = t + s2.Cells(j, 2).Value
End If
Next j
r = r + 1
s3.Cells(r, 1).Value = s1.Cells(i, 1).Value
s3.Cells(r, 2).Value = t
Next i
For i = 2 To s2.Range("A1").End(xlDown).Row
c = 0
For j = 2 To s1.Range("A1").End(xlDown).Row
If s2.Cells(i, 1).Value = s1.Cells(j, 1).Value Then
c = 1
End If
Next j
If c = 0 Then
r = r + 1
s3.Cells(r, 1).Value = s2.Cells(i, 1).Value
s3.Cells(r, 2).Value = s2.Cells(i, 2).Value
End If
Next i
End Sub
簡単なマクロの説明です。
Set s1 = Worksheets(1)
Set s2 = Worksheets(2)
Set s3 = Worksheets(3)
それぞれのシートを「s1, s2, s3」に設定しています。
r = 1
3番目のシートの行数をカウントするための「r」。
For i = 2 To s1.Range("A1").End(xlDown).Row
左端のシートの最終行まで繰り返し。
t = s1.Cells(i, 2).Value
「t」は、合計を出すため。
For j = 2 To s2.Range("A1").End(xlDown).Row
左から2番目のシートの最後まで繰り返し。
If s1.Cells(i, 1).Value = s2.Cells(j, 1).Value Then
もし、左端のシートと2番目のシートのセルの値(JAN)が一致した場合は、
t = t + s2.Cells(j, 2).Value
合計に追加。
End If
Next j
r = r + 1
s3.Cells(r, 1).Value = s1.Cells(i, 1).Value
s3.Cells(r, 2).Value = t
左端から3番目のシートにそれぞれ記入。
Next i
次に、上記では、シート1の「JAN」と一致するものを「シート2」から探しています。
そして、見つかっても、見つからなくても、その値をシート3に記入しています。
そこで、今度は、シート2からシート1側を探して、一致した場合は、記入しない、として、一致しなかった分、すなわち、上記での記載漏れを記入しています。
For i = 2 To s2.Range("A1").End(xlDown).Row
今度は、シート2から調べています。
c = 0
For j = 2 To s1.Range("A1").End(xlDown).Row
If s2.Cells(i, 1).Value = s1.Cells(j, 1).Value Then
c = 1
一致した場合は、「c = 1」に設定。
End If
Next j
If c = 0 Then
一致したものがなかった場合、
r = r + 1
s3.Cells(r, 1).Value = s2.Cells(i, 1).Value
s3.Cells(r, 2).Value = s2.Cells(i, 2).Value
End If
Next i
以上です。
余計なことをして申し訳ございません。