プロが教える店舗&オフィスのセキュリティ対策術

エクセル マクロについての質問です。
チラシと在庫という異なるブックがあります。

チラシのSheet1は
B列 商品コード

在庫のSheet1は
F列 商品コード
K列 在庫数
M列 発注数

という形でデータが入っています。
このチラシのB列の商品コードと在庫の商品コードを照合して一致したものの在庫数と発注数をチラシのH列とI列に貼り付けをしたいです。

自分でネットなどを参照してコードを作っていましたが分からずに在庫数をコピーして持ってくることもできませんでした・・・。
レベルが低くて申し訳ありません。

どなたかご教授願えないでしょうか。
よろしくお願いいたします。<b

A 回答 (2件)

こんばんは!


一例です。

「在庫」ブックが開いていない場合は開いて、操作完了後閉じるようにしてみました。
「チラシ」ブックの標準モジュールにしてみてください。

Sub Sample1()
Dim i As Long, k As Long, c As Range, wS As Worksheet
Dim myPath As String, fN As String, myFlg As Boolean
myPath = "保存場所のパス" & "\" '//←パスはプロパティで確認してください。
fN = "在庫.xlsx"
'//「在庫」ブックが開いていない場合は開く
Application.ScreenUpdating = False
For k = 1 To Workbooks.Count
If Workbooks(k).Name = fN Then
myFlg = True
End If
Next k
If myFlg = False Then
Workbooks.Open myPath & fN
End If
Set wS = Workbooks(fN).Worksheets("Sheet1")
With ThisWorkbook.Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "B").End(xlUp).Row
Set c = wS.Range("F:F").Find(what:=.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Cells(i, "H") = c.Offset(, 5)
.Cells(i, "I") = c.Offset(, 7)
Else
.Cells(i, "H").Resize(, 2).ClearContents
End If
Next i
End With
Workbooks(fN).Close
Application.ScreenUpdating = True
MsgBox "処理完了"
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

私だったらですが


在庫のブックのデータを
チラシのブックの別シートに張り付けるマクロを考える
( Workbook_Openでも利用してチラシのブックを開いたら常に
 最新の在庫数になるようにするなど)
チラシの在庫数などは、Vlookup関数で処理させます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!