目次
速習 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