概要
エクセルで在庫管理表を作成できます。
ポイントは次の2点です。
- テーブルを分割して紐づけ、ピボットテーブルで在庫を可視化
商品や入出庫履歴のように更新頻度の異なるデータを分けられるため、見やすく、管理しやすくなります 。 - テーブル参照を使った入力規則を設定
データ入力時に候補から選択でき、また想定外の入力を排除できるため、入力ミスや表記ゆれを最小限にできます 。
在庫管理でよくある課題と解決策
課題
在庫をエクセルで管理しようとすると、
- 列が増えると入力ミスや表記ゆれが増える
- 商品や入出庫の履歴を分けにくく、更新しづらい
- データを集計しようにも、どこを参照すればいいかわからない
これを解決するために、マスタ・トランザクション・ピボットの3構成に分けます。
解決策:テーブルを分割して紐づける
在庫管理表を構築するポイントは次の2つです。
- テーブルを分割して、ピボットテーブルで在庫を可視化
更新頻度の異なるデータを分離 - テーブル参照を使った入力規則を設定
プルダウン式で入力ミスを防止
この要素を組み合わせることで、
必要なテーブルと項目
在庫管理の基盤となるテーブルは、次の4種類です。
| テーブル名 | 種類 | 主な役割 |
|---|---|---|
| M_商品 | マスタ | 商品情報の管理 |
| T_入出庫履歴 | トランザクション | 入庫・出庫の履歴管理 |
| 在庫ピボット | ピボット | 在庫数・アラート表示 |
| その他のマスタ (M_保管場所 M_担当者など) | マスタ | 入力規則で参照するテーブル (必要分を用意) |

商品マスタ(M_商品)
商品一覧とその情報を格納します。
| 項目 | 内容 | データ型 |
|---|---|---|
| 品番(商品コード) | 商品を区別するための重複しない値。 | 数値/文字列 |
| 品名 | 商品の名称。 | 文字列 |
| 在庫閾値 | 在庫不足アラートを表示させる在庫数 (下回るとアラート発生)。 アラート表示が不要な場合は0。 | 数値 |
| 保管場所 | 商品の保管されている場所。 | 文字列 (M_保管場所参照) |
| 金額 | 商品単価や総額を記載し、売上・在庫評価に活用。 | 数値 |
| 備考 | 補足事項の記入欄。 | 文字列 |
| 品番 + 品名 | 入出庫リスト内で入力候補として参照するリスト ※1。 | 文字列(関数使用) |
入出庫履歴(T_入出庫履歴)
在庫からの入庫・出庫記録を記入します。
| 項目 | 内容 | データ型 |
|---|---|---|
| 品番 | 入出庫した商品の品番。(品番 + 品名)列から抽出 | 数値/文字列(関数使用) |
| 日付 | 入出庫が発生した日付。 | 数値 |
| 入庫数 | 仕入れて倉庫に入った数量。 | 数値(整数) |
| 出庫数 | 販売や使用で倉庫から出た数量。 | |
| 担当者 | 入出庫を行った人物。 | 文字列 |
| 品番 + 品名 | 入出庫した商品情報の入力欄。品番のみを抽出して使用 ※1。 | 文字列 (M_商品参照) |
※1 M_商品とT_入出庫履歴のリレーションは「品番」で行いますが、
その他のマスタ
商品マスタや入出庫履歴のデータ入力時の入力規則として使用されるテーブルです。
保管場所マスタ(M_保管場所)
| 項目 | 内容 | データ型 |
|---|---|---|
| 保管場所 | 棚などの保管場所のリスト | 文字列 |
担当者マスタ(M_担当者)
| 項目 | 内容 | データ型 |
|---|---|---|
| 担当者 | 入出庫する可能性のある人物のリスト | 文字列 |
エクセルでの実装手順
エクセルで在庫管理表を作成する手順を解説します。
手順1. 商品マスタを作成する
- 以下の列を持つテーブルM_商品を作成する。
- 品番(必須)
- 品名(必須)
- 品番||品名(必須)※2
- 在庫閾値(必須)
- 保管場所(任意)
- 金額(任意)
- 備考(任意)
- 品番||品名列のセルに=[@品番]&"||"&[@品名]を記入する※2。

テーブルの作成方法
- 作成するセルを選択
- 挿入タブ > テーブルボタン
(Ctrl + t)
※2 「品番」と「品名」の結合文字は使用頻度の低いものを
文字列品番||品名は品番と品名を||で結合しています。
結合に使用する文字列(デリミタ)は、__や::などでも構いません。
ただし、 結合した文字列を後で分解できるように、
品番と品名の中で使われない文字列である必要があります
(品番や品名の中で|を使用している場合でも、||が使われなければOK)。
手順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([在庫閾値])
- ※ 記入場所は計算領域内のどのセルでも良い
- パワーピボットエディタを終了(ウィンドウ×ボタン)
- 在庫数とアラートアイコンを表示する。
- 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_入出庫履歴テーブルへの設定
ファイルの使い方
在庫状況の確認
使用テーブル: ピボットテーブル(在庫ピボット)
- 「すべて更新」(Ctrl + Alt + F5)をクリック。
- ピボットテーブルを右クリック > 更新
- または データタブ > すべて更新ボタン
- テーブル上の在庫数とアラートを確認。
ピボットテーブルは自動で更新されない
ピボットテーブルは手動での更新が必要です。
T_入出庫履歴やM_商品のデータを変更したり追加しても、自動ではその内容は反映されません。
入出庫履歴の記録
使用テーブル: T_入出庫履歴
- 入出庫が発生したら、テーブルに行を追加。
- テーブルの末端(右下)セルでtab
- または、既存の行をコピペ
- 品番以外を記入。
- ※ 品番は、関数で自動的に記入
- ※ 在庫ピボットに反映するには、ピボットテーブルのデータ更新が必要
商品情報の更新
使用テーブル: M_商品
- 商品を新規追加する場合は、テーブルに行を追加。
- 行を追加
- テーブルの末端(右下)セルでtab
- または、既存の行をコピペ
- 品番||品名以外を記入
- ※ 品番||品名は、関数で自動的に記入
- 行を追加
- 既存商品の情報を変更する場合は、セル値の書き換え。
- 変更内容は、在庫ピボットにも反映される(要ピボットテーブルのデータ更新)
まとめ
- VBA不要で、エクセルだけで在庫管理システムを構築できる。
- 商品マスタ、入出庫履歴、ピボットの別テーブルで、分割してデータを管理できる。
- 入力規則とテーブル参照でミスや表記ゆれを防止。
- KPIアイコンで在庫アラートを可視化できる。
関連
本記事では、


