• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:在庫の集計VBAについて)

在庫の集計VBAについて

このQ&Aのポイント
  • 在庫の集計VBAについて質問があります。元のエクセルファイルにはすべての商品コードとサイズと在庫数が記載されていますが、週に2回回ってくる在庫表には在庫のあるコードとサイズと個数しか書かれていないため、マージして在庫数をまとめたいです。在庫が復活するとまた書き直さなければならないため、困っています。
  • 在庫の集計に関するVBAの問題です。元のエクセルファイルには全ての商品コードとサイズと在庫数が記載されていますが、回ってくる在庫表には在庫のあるコードとサイズと個数しか書かれていません。そのため、在庫がない商品の情報を復元するための方法を探しています。
  • 在庫の集計についての質問です。元のエクセルファイルにはすべての商品コードとサイズと在庫数が記載されていますが、回ってくる在庫表には在庫のあるコードとサイズと個数しか書かれていません。在庫が復活するとまた書き直す必要があるので、解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 >元のエクセルファイルにすべての商品コードとサイズと在庫数 の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

babys69
質問者

お礼

tom04様 ありがとうございます。 解決しました。 またよろしくお願いします。

関連するQ&A

専門家に質問してみよう