目次
速習 Excel VBA 8
商品マスタを合成する
事業所毎に異なる製品マスタを本社用に合成します

アルゴリズム
Excel-VBAで内容に差異のある二つの表を合成します。

ソースコード
Private Sub CommandButton1_Click()
Set ws = Worksheets("商品マスタ合成")
' 項目のコピー
For i = 2 To 6
ws.Cells(24, i) = ws.Cells(11, i)
Next i
行札幌 = 12: 終札幌 = 20
行福岡 = 12: 終福岡 = 19
行本社 = 25:
Do
商品札幌 = Cells(行札幌, 2)
商品福岡 = Cells(行福岡, 8)
'Debug.Print 商品札幌, 商品福岡, StrComp(商品札幌, 商品福岡)
'StrComp(商品札幌, 商品福岡) = -1 商品札幌,< 商品福岡
'StrComp(商品札幌, 商品福岡) = 0 商品札幌,= 商品福岡
'StrComp(商品札幌, 商品福岡) = 1 商品札幌,> 商品福岡
If StrComp(商品札幌, 商品福岡) = 0 Then '等しい
Cells(行本社, 2) = 商品札幌
For i = 2 To 6
ws.Cells(行本社, i) = ws.Cells(行札幌, i)
Next i
If 行札幌 <= 終札幌 Then 行札幌 = 行札幌 + 1
If 行福岡 <= 終福岡 Then 行福岡 = 行福岡 + 1
行本社 = 行本社 + 1
End If
If StrComp(商品札幌, 商品福岡) = -1 Then '札幌が小さい
Cells(行本社, 2) = 商品札幌
For i = 2 To 6
ws.Cells(行本社, i) = ws.Cells(行札幌, i)
Next i
If 行札幌 <= 終札幌 Then 行札幌 = 行札幌 + 1
行本社 = 行本社 + 1
End If
If StrComp(商品札幌, 商品福岡) = 1 Then '福岡が小さい
Cells(行本社, 2) = 商品福岡
For i = 2 To 6
ws.Cells(行本社, i) = ws.Cells(行福岡, i)
Next i
If 行福岡 <= 終福岡 Then 行福岡 = 行福岡 + 1
行本社 = 行本社 + 1
End If
'If 行札幌 < 終札幌 Then 行札幌 = 行札幌 + 1
'If 行福岡 < 終福岡 Then 行福岡 = 行福岡 + 1
Debug.Print 行札幌, 行福岡, 行本社
If InputBox("無限ループ:e") = "e" Then Exit Do
Loop Until (行札幌 > 終札幌 And 行福岡 > 終福岡) '終了条件
End Sub