在庫管理表の作り方【エクセルでデータ活用システムの構築】

概要
エクセルで在庫管理表を作成できます。
ポイントは次の2点です。
- テーブルを分割して紐づけ、
ピボットテーブルで在庫を可視化
-> 商品や入出庫履歴のように更新頻度の異なるデータを分けられるため、見やすく、 管理しやすくなります。 - テーブル参照を使った入力規則を設定
-> データ入力時に候補から選択でき、また想定外の入力を排除できるため、 入力ミスや表記ゆれを最小限にできます。
在庫管理でよくある課題と解決策
課題
在庫をエクセルで管理しようとすると、
- 列が増えると入力ミスや表記ゆれが増える
- 商品や入出庫の履歴を分けにくく、
更新しづらい - データを集計しようにも、
どこを参照すればいいかわからない
これを解決するために、
解決策:テーブルを分割して紐づける
在庫管理表を構築するポイントは次の2つです。
- テーブルを分割して、
ピボットテーブルで在庫を可視化 -> 更新頻度の異なるデータを分離 - テーブル参照を使った入力規則を設定
-> プルダウン式で入力ミスを防止
この要素を組み合わせることで、
必要なテーブルと項目
在庫管理の基盤となるテーブルは、
| テーブル名 | 種類 | 主な役割 |
|---|---|---|
| M_商品 | マスタ | 商品情報の管理 |
| T_入出庫履歴 | トランザクション | 入庫・出庫の履歴管理 |
| 在庫ピボット | ピボット | 在庫数・アラート表示 |
| その他のマスタ (M_保管場所 M_担当者など) | マスタ | 入力規則で参照するテーブル (必要分を用意) |
商品マスタ(M_商品)
商品一覧とその情報を格納します。
| 項目 | 内容 | データ型 |
|---|---|---|
| 品番(商品コード) | 商品を区別するための重複しない値。 | 数値/文字列 |
| 品名 | 商品の名称。 | 文字列 |
| 在庫閾値 | 在庫不足アラートを表示させる在庫数 (下回るとアラート発生) アラート表示が不要な場合は0。 | 数値 |
| 保管場所 | 商品の保管されている場所。 | 文字列 (M_保管場所参照) |
| 金額 | 商品単価や総額を記載し、 | 数値 |
| 備考 | 補足事項の記入欄。 | 文字列 |
| 品番 + 品名 | 入出庫リスト内で入力候補として参照するリスト ※1。 | 文字列(関数使用) |
入出庫履歴(T_入出庫履歴)
在庫からの入庫・出庫記録を記入します。
| 項目 | 内容 | データ型 |
|---|---|---|
| 品番 | 入出庫した商品の品番。 | 数値/文字列(関数使用) |
| 日付 | 入出庫が発生した日付。 | 数値 |
| 入庫数 | 仕入れて倉庫に入った数量。 | 数値(整数) |
| 出庫数 | 販売や使用で倉庫から出た数量。 | |
| 担当者 | 入出庫を行った人物。 | 文字列 |
| 品番 + 品名 | 入出庫した商品情報の入力欄。 | 文字列 (M_商品参照) |
※1 M_商品とT_入出庫履歴のリレーションは「品番」
その他のマスタ
商品マスタや入出庫履歴のデータ入力時の入力規則として使用されるテーブルです。
保管場所マスタ(M_保管場所)
| 項目 | 内容 | データ型 |
|---|---|---|
| 保管場所 | 棚などの保管場所のリスト | 文字列 |
担当者マスタ(M_担当者)
| 項目 | 内容 | データ型 |
|---|---|---|
| 担当者 | 入出庫する可能性のある人物のリスト | 文字列 |
エクセルでの実装手順
エクセルで在庫管理表を作成する手順を解説します。
手順1. 商品マスタを作成する
- 以下の列を持つテーブルM_商品を作成する。
- 品番(必須)
- 品名(必須)
- 品番||品名(必須)
※2 - 在庫閾値(必須)
- 保管場所(任意)
- 金額(任意)
- 備考(任意)
- 品番(必須)
- 品番||品名列のセルに=[@品番]&"||"&[@品名]を記入する※2。
テーブルの作成方法
- 作成するセルを選択
- 挿入タブ > テーブルボタン
(Ctrl + t)
※2 「品番」
文字列品番||品名は品番と品名を||で結合しています。
結合に使用する文字列(デリミタ)
ただし、
品番と品名の中で使われない文字列である必要があります
(品番や品名の中で|を使用している場合でも、
手順2. 入出庫履歴を作成する
- 以下の列を持つテーブルT_入出庫履歴を作成する。
- 日付(必須)
- 品番||品名(必須)
- 品番(必須)
- 入庫数(必須)
- 出庫数(必須)
- 担当者(任意)
- 備考(任意)
- 日付(必須)
- 品番列のセルに=LEFT([@品番||品名], FIND("||", [@品番||品名]) - 1)を記入する。
- ※ 品番||品名から||を基準に品番を抽出
- 品番||品名列のセルに入力規則を設定する。
- 品番||品名のセルを範囲選択 > データタブ > データの入力規則の設定ボタン
- データの入力規則ウィンドウ(設定タブ)
で以下を設定 - 入力値の種類:リスト
- 空白を無視する:チェックなし
- ドロップダウンリストから選択する:チェックあり
- 元の値:=INDIRECT("M_商品[品番||品名]") ※3
- 入庫数列と出庫数列がすべての行で空欄の場合は、
0を記入した行を追加する。 - ※ すべての行で空欄の列は、
ピボットテーブルで「文字列」 データ形式の列と判定され、 エラーが生じる原因となるため。
- ※ すべての行で空欄の列は、
※3 INDIRECT関数により構造化参照を使用
入力規則の設定中の「元の値」
しかしINDIRECT関数を利用することで、
構造化参照により、
(かつ同ブック内である)
テーブルや列の位置を移動させてもリンクが切れません。
手順3. 在庫管理ピボットを作成する
- M_商品、
T_入出庫履歴テーブル間を、 品番列で紐づける。 - ※ 品番||品名列でリレーションシップを設定することも可能ですが、
品名が修正されることを考慮し、 品番のみを使用します
- データタブ > データモデルボタン > リレーションシップボタン > 新規作成ボタン
- リレーションシップの作成ウィンドウで以下を設定 > OKボタン
- テーブル:T_入出庫履歴
- 列(外部)
:品番 - 関連テーブル:M_商品
- 関連列(プライマリ)
:品番
- リレーションシップの作成ウィンドウで閉じるボタン
- ※ 品番||品名列でリレーションシップを設定することも可能ですが、
- ピボットテーブルを設置する。
- 挿入タブ > ピボットテーブルプルダウン > データモデルからボタン
- 設置場所を選択 > OKボタン
- フィールドを設定する。
- 行:品番、
品名(+ 表示させたい項目) - 値:入庫数(合計値)
、 出庫数(合計値)
- 行:品番、
- デザインを変更する(任意)
。 - デザインタブ > レポートのレイアウト > 表形式で表示を選択
- ピボットテーブル分析タブ > +/-ボタンをOFF
- 在庫数、
閾値メジャーを追加する。 - ※ PowerPivotアドインをONにしておくこと
- Power Pivotタブ > 管理ボタンでパワーピボットエディタ起動
- 詳細設定タブ > 暗黙のメジャーの表示をON
(フィールド設定した「合計値/入庫数」 「合計値/出庫数」 が下部の計算領域に表示される) - 下部の計算領域に以下を記入
- (T_入出庫履歴シート内)
在庫数:=[合計 / 入庫数]-[合計 / 出庫数] - (M_商品シート内)
閾値:=SUM([在庫閾値]) - ※ 記入場所は計算領域内のどのセルでも良い
- (T_入出庫履歴シート内)
- パワーピボットエディタを終了(ウィンドウ×ボタン)
- 在庫数とアラートアイコンを表示する。
- Power Pivotタブ > KPIプルダウン > 新しいKPI..ボタン
- 主要業績評価指標(KPI)ウィンドウで以下を設定 > OKボタン
- KPIベースフィールド:在庫数
- 対象の値の定義:メジャー: 閾値
- 状態の閾値の定義:0.1%, 100%
(在庫数が閾値の 0.1%未満(≒ 0個) のとき赤、 100%未満(0個 ~ 閾値未満) のとき黄、 100以上(閾値以上) のとき緑) - アイコンのスタイルの選択:好みのアイコンセット
- ピボットテーブルのフィールドの値に以下を追加
- 在庫数
- 在庫数:状態(アイコン表示されない場合は、
一度外して再度追加)
- ファイルを開いたときの自動更新を設定する
- ピボットテーブル中のセルを選択 > 右クリック > ピボットテーブル オプション選択
- ピボットテーブル オプションウィンドウのデータタブ > ファイルを開くときにデータを更新にチェック > OKボタン
アラートにKPI機能を使う理由
在庫状態を視覚的に示す方法として「条件付き書式」
ここではパワーピボットのKPI機能を使用しています。
ピボットテーブル内のセルを参照するときに、
構造化参照が使えないので、
結果的に、
手順4. 入力規則を設定する
入力規則のリストとして使用するテーブルを用意し、
M_商品テーブルへの設定
M_商品の保管場所列に入力規則を設定します。
※ M_商品内に保管場所列がない場合は不要
- 保管場所列を持つM_保管場所テーブルを作成する。
- M_商品の保管場所列に入力規則を設定する。
- 保管場所のセルを範囲選択 > データタブ > データの入力規則の設定ボタン
- データの入力規則ウィンドウ(設定タブ)
で以下を設定 - 入力値の種類:リスト
- 空白を無視する:チェックあり
- ドロップダウンリストから選択する:チェックあり
- 元の値:=INDIRECT("M_保管場所[保管場所]")
T_入出庫履歴テーブルへの設定
T_入出庫履歴の担当者列に入力規則を設定する
※ T_入出庫履歴内に担当者列がない場合は不要
- 担当者列を持つM_担当者テーブルを作成する。
- T_入出庫履歴の担当者列に入力規則を設定する。
- 担当者のセルを範囲選択 > データタブ > データの入力規則の設定ボタン
- データの入力規則ウィンドウ(設定タブ)
で以下を設定 - 入力値の種類:リスト
- 空白を無視する:チェックあり
- ドロップダウンリストから選択する:チェックあり
- 元の値:=INDIRECT("M_担当者[担当者]")
ファイルの使い方
在庫状況の確認
使用テーブル: ピボットテーブル(在庫ピボット)
- 「すべて更新」
(Ctrl + Alt + F5) をクリック。 - ピボットテーブルを右クリック > 更新
- または データタブ > すべて更新ボタン
- テーブル上の在庫数とアラートを確認。
ピボットテーブルは自動で更新されない
ピボットテーブルは手動での更新が必要です。
T_入出庫履歴やM_商品のデータを変更したり追加しても、
入出庫履歴の記録
使用テーブル: T_入出庫履歴
- 入出庫が発生したら、
テーブルに行を追加。 - テーブルの末端(右下)
セルでtab - または、
既存の行をコピペ
- テーブルの末端(右下)
- 品番以外を記入。
- ※ 品番は、
関数で自動的に記入 - ※ 在庫ピボットに反映するには、
ピボットテーブルのデータ更新が必要
- ※ 品番は、
商品情報の更新
使用テーブル: M_商品
- 商品を新規追加する場合は、
テーブルに行を追加。 - 行を追加
- テーブルの末端(右下)
セルでtab - または、
既存の行をコピペ
- テーブルの末端(右下)
- 品番||品名以外を記入
- ※ 品番||品名は、
関数で自動的に記入
- ※ 品番||品名は、
- 行を追加
- 既存商品の情報を変更する場合は、
セル値の書き換え。 - 変更内容は、
在庫ピボットにも反映される(要ピボットテーブルのデータ更新)
- 変更内容は、
まとめ
- VBA不要で、
エクセルだけで在庫管理システムを構築できる。 - 商品マスタ、
入出庫履歴、 ピボットの別テーブルで、 分割してデータを管理できる。 - 入力規則とテーブル参照でミスや表記ゆれを防止。
- KPIアイコンで在庫アラートを可視化できる。
関連
本記事では、






