こんにちは!
一例です。
>元のエクセルファイルにすべての商品コードとサイズと在庫数
のSheetが「Sheet1」として、
>在庫表が他部署から回ってきます
が「Sheet2」とします。
両Sheetとも1行目は項目行でデータはA2セル以降にあるとして、
標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。
Sub Sample1()
Dim i As Long, endRow1 As Long, endRow2 As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1") '←Sheet1は実際のSheet名に!
Set wS2 = Worksheets("Sheet2") '←Sheet2も実際のSheet名に!
Application.ScreenUpdating = False
endRow2 = wS2.Cells(Rows.Count, "A").End(xlUp).Row
wS2.Range("D:D").Insert
Range(wS2.Cells(2, "D"), wS2.Cells(endRow2, "D")).Formula = "=A2&""_""&B2"
endRow1 = wS1.Cells(Rows.Count, "A").End(xlUp).Row
wS1.Range("D:E").Insert
Range(wS1.Cells(2, "D"), wS1.Cells(endRow1, "D")).Formula = "=A2&""_""&B2"
Range(wS1.Cells(2, "E"), wS1.Cells(endRow1, "E")).Formula = _
"=IF(COUNTIF(Sheet2!D:D,D2),INDEX(Sheet2!C:C,MATCH(D2,Sheet2!D:D,FALSE)),0)"
Range(wS1.Cells(2, "E"), wS1.Cells(endRow1, "E")).Copy
wS1.Cells(2, "C").Select
Selection.PasteSpecial Paste:=xlPasteValues
wS1.Range("D:E").Delete
wS2.Range("D:D").Delete
Application.ScreenUpdating = True
End Sub
※ じっくり考えればもっと簡単になるかもしれません。m(_ _)m
お礼
tom04様 ありがとうございます。 解決しました。 またよろしくお願いします。