商品価格の改定は、業務で頻繁に発生する作業の1つです。
商品コードごとに新価格を反映させる処理を手作業で行うと、手間がかかるだけでなくミスも生まれやすくなります。
そこで今回は、「商品一覧」と「改定リスト」の2つのシートを使い、商品価格を一括で自動反映するマクロをご紹介します。
初めての方にもわかりやすく、比較的シンプルな構成となっています。
商品価格を一括で更新するマクロ
次のマクロでは、「商品一覧」シートのA列にある商品コードをもとに、「改定リスト」シートの新価格をC列に反映します。
Sub UpdatePrice_WithoutDict()
Dim i As Long
Dim j As Long
Dim code As String
Dim lastRowList As Long
Dim lastRowUpd As Long
With Sheets("商品一覧")
lastRowList = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRowList
code = .Cells(i, 1).Value
With Sheets("改定リスト")
lastRowUpd = .Cells(.Rows.Count, 1).End(xlUp).Row
For j = 2 To lastRowUpd
If .Cells(j, 1).Value = code Then
Sheets("商品一覧").Cells(i, 3).Value = .Cells(j, 2).Value
Exit For
End If
Next j
End With
Next i
End With
MsgBox "価格の一括更新が完了しました", vbInformation
End Sub
このマクロは、次のようなルールで動作します。
- 「商品一覧」の商品コード(A列)を1件ずつ確認
- 「改定リスト」シートで同じコードを検索
- 一致すれば、新価格(B列)を「商品一覧」のC列へ転記
実際の用途では、100件〜500件程度のデータなら問題なく処理できます。
実装するメリット
このようなマクロを実装することで、次のような利点があります。
- 手作業による転記ミスを防止できる
- コードの知識が浅くても理解しやすい構造
- シート名や列構成を変えれば他の用途にも応用可能
また、のちの運用や処理速度改善を考える際に、Dictionaryを活用するステップに進むこともできます。
まとめ
商品価格の改定処理は、ExcelとVBAで十分自動化が可能です。
- 手作業での更新ミスをなくせる
- 数百件の処理ならスムーズに対応可能
- 初期はDictionaryを使わずシンプルに実装
価格変更のたびに時間がかかっていた作業も、このようなマクロで効率化が図れます。


