日々の棚卸業務で、紙に記録した内容をExcelへ再入力し、さらに重複や集計処理を行う作業は非常に手間がかかります。本記事では、VBAを活用して「複数条件が一致した場合に在庫数を集計し、重複を自動で削除する」ための考え方と実装方法を整理して解説します。
棚卸業務で発生しやすい非効率の正体
多くの現場では、紙での記録→Excel入力→再集計という3段階の作業が発生しています。
この工程では入力ミスや重複登録が起こりやすく、正確な在庫管理を妨げる原因になります。
特に「同一条件のデータを後からまとめる処理」が手作業だと負担になります。
今回の要件の整理(B・C・D列の一致)
今回のポイントは、B列・C列・D列がすべて一致するデータを1つのグループとして扱うことです。
その上で、同じ条件の在庫数を合計し、重複行を削除する処理が必要になります。
この処理はExcel関数でも可能ですが、VBAを使うことで柔軟性が大幅に向上します。
VBAでの基本的な考え方(辞書オブジェクトを使う)
このような集計処理では「Dictionary(辞書)」を使う方法が一般的です。
B・C・D列を連結したキーを作成し、そのキーごとに在庫数を加算していきます。
これにより、同じ条件のデータを1行にまとめることができます。
実装イメージ(サンプルVBAコード)
以下は基本的な処理のイメージです。
※実務ではシート名や範囲に応じて調整が必要です。
Dim dict As Object:Set dict = CreateObject(“Scripting.Dictionary”)
Dim i As Long, key As String, qty As Double
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
key = Cells(i, 2).Value & “_” & Cells(i, 3).Value & “_” & Cells(i, 4).Value
qty = Cells(i, 5).Value
If dict.exists(key) Then
dict(key) = dict(key) + qty
Else
dict.Add key, qty
End If
Next i
重複削除と結果出力の方法
集計後はDictionaryの内容を新しいシートへ出力することで、重複のない一覧を作成できます。
この方法により、元データを壊さずに安全に集計結果を作成できます。
また、必要に応じてフィルタや並び替え処理も追加可能です。
さらに業務を効率化するための改善ポイント
今回のような処理は一度作れば繰り返し利用できるため、マクロ化してボタン実行にするのが効果的です。
また、紙運用そのものを見直し、入力フォーム化することでさらなる効率化も可能です。
将来的にはPower Automateやデータベース連携も検討できます。
まとめ
VBAを活用することで、棚卸業務における「転記・集計・重複削除」を自動化できます。
B・C・D列をキーにした集計処理はDictionaryを使うことでシンプルに実装可能です。
手作業を減らすことで、ミス削減と業務効率の大幅な改善が期待できます。


コメント