VBAで棚卸業務を効率化する方法|複数条件一致で在庫を集計し重複を削除する実践手順

Visual Basic

日々の棚卸業務で、紙に記録した内容を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を使うことでシンプルに実装可能です。

手作業を減らすことで、ミス削減と業務効率の大幅な改善が期待できます。

コメント

タイトルとURLをコピーしました