さくっとエクセレートさくっとエクセレート

概要

エクセルで在庫管理表を作成できます。 VBAを使わず、データ活用しやすいシステムの構築が可能です。

ポイントは次の2点です。

  • テーブルを分割して紐づけ、ピボットテーブルで在庫を可視化
    商品や入出庫履歴のように更新頻度の異なるデータを分けられるため、 見やすく、管理しやすくなります
  • テーブル参照を使った入力規則を設定
    データ入力時に候補から選択でき、また想定外の入力を排除できるため、 入力ミスや表記ゆれを最小限にできます

在庫管理でよくある課題と解決策

課題

在庫をエクセルで管理しようとすると、 「1つの表にすべての情報を詰め込む」ケースが多いですが、これは非効率です。

  • 列が増えると入力ミスや表記ゆれが増える
  • 商品や入出庫の履歴を分けにくく、更新しづらい
  • データを集計しようにも、どこを参照すればいいかわからない

これを解決するために、マスタ・トランザクション・ピボットの3構成に分けます。 データベースの考え方を取り入れることで、見通しの良い在庫管理が可能になります。

解決策:テーブルを分割して紐づける

在庫管理表を構築するポイントは次の2つです。

  • テーブルを分割して、ピボットテーブルで在庫を可視化 更新頻度の異なるデータを分離
  • テーブル参照を使った入力規則を設定 プルダウン式で入力ミスを防止

この要素を組み合わせることで、 「商品情報を登録 → 入出庫を記録 → 自動で在庫数が反映」という流れが完成します。

必要なテーブルと項目

在庫管理の基盤となるテーブルは、次の4種類です。

テーブル名種類主な役割
M_商品マスタ商品情報の管理
T_入出庫履歴トランザクション入庫・出庫の履歴管理
在庫ピボットピボット在庫数・アラート表示
その他のマスタ
M_保管場所 M_担当者など)
マスタ入力規則で参照するテーブル
(必要分を用意)
各テーブルとリレーション・入力規則の紐づけ関係

商品マスタ(M_商品)

商品一覧とその情報を格納します。 在庫管理者によって更新され、最新情報に保たれます。

項目内容データ型
品番(商品コード)商品を区別するための重複しない値。数値/文字列
品名商品の名称。文字列
在庫閾値在庫不足アラートを表示させる在庫数
(下回るとアラート発生)。
アラート表示が不要な場合は0
数値
保管場所商品の保管されている場所。文字列
M_保管場所参照)
金額商品単価や総額を記載し、売上・在庫評価に活用。数値
備考補足事項の記入欄。文字列
品番 + 品名入出庫リスト内で入力候補として参照するリスト ※1。文字列(関数使用)

入出庫履歴(T_入出庫履歴)

在庫からの入庫・出庫記録を記入します。 入庫(出庫)するたびにデータが追加され、頻繁に書き込みされるテーブルです。

項目内容データ型
品番入出庫した商品の品番。(品番 + 品名)列から抽出数値/文字列(関数使用)
日付入出庫が発生した日付。数値
入庫数仕入れて倉庫に入った数量。数値(整数)
出庫数販売や使用で倉庫から出た数量。
担当者入出庫を行った人物。文字列
品番 + 品名入出庫した商品情報の入力欄。品番のみを抽出して使用 ※1。文字列
M_商品参照)

※1 M_商品T_入出庫履歴のリレーションは「品番」で行いますが、 T_入出庫履歴側で商品情報を入力する際は、「品番 + 品名」を使用します。 入力するときのプルダウン表示が「品番」のみだと、商品の判別が難しくなるためです。

その他のマスタ

商品マスタや入出庫履歴のデータ入力時の入力規則として使用されるテーブルです。

保管場所マスタ(M_保管場所

項目内容データ型
保管場所棚などの保管場所のリスト文字列

担当者マスタ(M_担当者

項目内容データ型
担当者入出庫する可能性のある人物のリスト文字列

エクセルでの実装手順

エクセルで在庫管理表を作成する手順を解説します。 解説のしやすさから、ここでは、 1つのシートにすべてのテーブルを配置していますが、 それぞれ個別のシートに配置することもできます (実用面ではこちらがオススメ)。 データ数が多くなり、テーブルサイズが大きくなる場合は、 それぞれ個別のシートに配置した方が使いやすいです。

手順1. 商品マスタを作成する

  1. 以下の列を持つテーブルM_商品を作成する。
    • 品番(必須)
    • 品名(必須)
    • 品番||品名(必須)※2
    • 在庫閾値(必須)
    • 保管場所(任意)
    • 金額(任意)
    • 備考(任意)
  2. 品番||品名列のセルに=[@品番]&"||"&[@品名]を記入する※2。
商品マスタテーブルの例

テーブルの作成方法

  1. 作成するセルを選択
  2. 挿入タブ > テーブルボタン
    Ctrl + t

※2 「品番」と「品名」の結合文字は使用頻度の低いものを

文字列品番||品名品番品名||で結合しています。
結合に使用する文字列(デリミタ)は、__::などでも構いません。
ただし、 結合した文字列を後で分解できるように、
品番品名の中で使われない文字列である必要があります
品番品名の中で|を使用している場合でも、||が使われなければOK)。

手順2. 入出庫履歴を作成する

  1. 以下の列を持つテーブルT_入出庫履歴を作成する。
    • 日付(必須)
    • 品番||品名(必須)
    • 品番(必須)
    • 入庫数(必須)
    • 出庫数(必須)
    • 担当者(任意)
    • 備考(任意)
  2. 品番列のセルに=LEFT([@品番||品名], FIND("||", [@品番||品名]) - 1)を記入する。
    • 品番||品名から||を基準に品番を抽出
  3. 品番||品名列のセルに入力規則を設定する。
    1. 品番||品名のセルを範囲選択 > データタブ > データの入力規則の設定ボタン
    2. データの入力規則ウィンドウ(設定タブ)で以下を設定
      • 入力値の種類:リスト
      • 空白を無視する:チェックなし
      • ドロップダウンリストから選択する:チェックあり
      • 元の値:=INDIRECT("M_商品[品番||品名]") ※3
  4. 入庫数列と出庫数列がすべての行で空欄の場合は、0を記入した行を追加する。
    • ※ すべての行で空欄の列は、ピボットテーブルで「文字列」データ形式の列と判定され、エラーが生じる原因となるため。
入出庫履歴テーブルの例

※3 INDIRECT関数により構造化参照を使用

入力規則の設定中の「元の値」で、直接構造化参照を使用できません。
しかしINDIRECT関数を利用することで、使用できます。
構造化参照により、テーブル名と列名が変わらない
(かつ同ブック内である)限りは、
テーブルや列の位置を移動させてもリンクが切れません。

手順3. 在庫管理ピボットを作成する

  1. M_商品T_入出庫履歴テーブル間を、品番列で紐づける。
    • 品番||品名列でリレーションシップを設定することも可能ですが、 品名が修正されることを考慮し、品番のみを使用します
    1. データタブ > データモデルボタン > リレーションシップボタン > 新規作成ボタン
    2. リレーションシップの作成ウィンドウで以下を設定 > OKボタン
      • テーブル:T_入出庫履歴
      • 列(外部):品番
      • 関連テーブル:M_商品
      • 関連列(プライマリ):品番
    3. リレーションシップの作成ウィンドウで閉じるボタン
  2. ピボットテーブルを設置する。
    1. 挿入タブ > ピボットテーブルプルダウン > データモデルからボタン
    2. 設置場所を選択 > OKボタン
  3. フィールドを設定する。
    • 行:品番、品名(+ 表示させたい項目)
    • 値:入庫数(合計値)、出庫数(合計値)
  4. デザインを変更する(任意)。
    • デザインタブ > レポートのレイアウト > 表形式で表示を選択
    • ピボットテーブル分析タブ > +/-ボタンをOFF
  5. 在庫数閾値メジャーを追加する。
    • ※ PowerPivotアドインをONにしておくこと
    1. Power Pivotタブ > 管理ボタンでパワーピボットエディタ起動
    2. 詳細設定タブ > 暗黙のメジャーの表示をON (フィールド設定した「合計値/入庫数」「合計値/出庫数」が下部の計算領域に表示される)
    3. 下部の計算領域に以下を記入
      • T_入出庫履歴シート内)在庫数:=[合計 / 入庫数]-[合計 / 出庫数]
      • M_商品シート内)閾値:=SUM([在庫閾値])
      • ※ 記入場所は計算領域内のどのセルでも良い
    4. パワーピボットエディタを終了(ウィンドウ×ボタン)
  6. 在庫数とアラートアイコンを表示する。
    1. Power Pivotタブ > KPIプルダウン > 新しいKPI..ボタン
    2. 主要業績評価指標(KPI)ウィンドウで以下を設定 > OKボタン
      • KPIベースフィールド:在庫数
      • 対象の値の定義:メジャー: 閾値
      • 状態の閾値の定義:0.1%, 100% 在庫数閾値 0.1%未満(≒ 0個)のとき赤、 100%未満(0個 ~ 閾値未満)のとき黄、 100以上(閾値以上)のとき緑)
      • アイコンのスタイルの選択:好みのアイコンセット
    3. ピボットテーブルのフィールドの値に以下を追加
      • 在庫数
      • 在庫数:状態(アイコン表示されない場合は、一度外して再度追加)
  7. ファイルを開いたときの自動更新を設定する
    1. ピボットテーブル中のセルを選択 > 右クリック > ピボットテーブル オプション選択
    2. ピボットテーブル オプションウィンドウのデータタブ > ファイルを開くときにデータを更新にチェック > OKボタン

パワーピボットでのDAX関数の記入 作成後のピボットテーブルとKPIの設定


アラートにKPI機能を使う理由

在庫状態を視覚的に示す方法として 「条件付き書式」を使う方法もありますが
ここではパワーピボットのKPI機能を使用しています。
ピボットテーブル内のセルを参照するときに、構造化参照を使用できないためです。
構造化参照が使えないので、条件付き書式の設定時にセル参照を使わざるを得なくなりますが、
結果的に、 ピボットテーブルを移動したりフィールド設定をしたときに機能しなくなります

手順4. 入力規則を設定する

入力規則のリストとして使用するテーブルを用意し、 M_商品T_入出庫履歴中で使用します。 下記の設定方法により、 M_商品T_入出庫履歴に入力規則を設定した列を追加できます。

M_商品テーブルへの設定

M_商品保管場所列に入力規則を設定します。
M_商品内に保管場所列がない場合は不要

  1. 保管場所列を持つM_保管場所テーブルを作成する。
  2. M_商品保管場所列に入力規則を設定する。
    1. 保管場所のセルを範囲選択 > データタブ > データの入力規則の設定ボタン
    2. データの入力規則ウィンドウ(設定タブ)で以下を設定
      • 入力値の種類:リスト
      • 空白を無視する:チェックあり
      • ドロップダウンリストから選択する:チェックあり
      • 元の値:=INDIRECT("M_保管場所[保管場所]")
M_保管場所テーブルを入力規則リストとして利用

T_入出庫履歴テーブルへの設定

T_入出庫履歴担当者列に入力規則を設定する M_商品保管場所列に設定した方法と同じ)。
T_入出庫履歴内に担当者列がない場合は不要

  1. 担当者列を持つM_担当者テーブルを作成する。
  2. T_入出庫履歴担当者列に入力規則を設定する。
    1. 担当者のセルを範囲選択 > データタブ > データの入力規則の設定ボタン
    2. データの入力規則ウィンドウ(設定タブ)で以下を設定
      • 入力値の種類:リスト
      • 空白を無視する:チェックあり
      • ドロップダウンリストから選択する:チェックあり
      • 元の値:=INDIRECT("M_担当者[担当者]")
M_担当者テーブルを入力規則リストとして利用

ファイルの使い方

在庫状況の確認

使用テーブル: ピボットテーブル(在庫ピボット)

  1. 「すべて更新」(Ctrl + Alt + F5)をクリック。
    • ピボットテーブルを右クリック > 更新
    • または データタブ > すべて更新ボタン
  2. テーブル上の在庫数とアラートを確認。

ピボットテーブルは自動で更新されない

ピボットテーブルは手動での更新が必要です。
T_入出庫履歴M_商品のデータを変更したり追加しても、自動ではその内容は反映されません。

入出庫履歴の記録

使用テーブル: T_入出庫履歴

  1. 入出庫が発生したら、テーブルに行を追加。
    • テーブルの末端(右下)セルでtab
    • または、既存の行をコピペ
  2. 品番以外を記入。
    • 品番は、関数で自動的に記入
    • ※ 在庫ピボットに反映するには、ピボットテーブルのデータ更新が必要

商品情報の更新

使用テーブル: M_商品

  • 商品を新規追加する場合は、テーブルに行を追加。
    1. 行を追加
      • テーブルの末端(右下)セルでtab
      • または、既存の行をコピペ
    2. 品番||品名以外を記入
      • 品番||品名は、関数で自動的に記入
  • 既存商品の情報を変更する場合は、セル値の書き換え。
    • 変更内容は、在庫ピボットにも反映される(要ピボットテーブルのデータ更新)

まとめ

  • VBA不要で、エクセルだけで在庫管理システムを構築できる。
  • 商品マスタ、入出庫履歴、ピボットの別テーブルで、分割してデータを管理できる。
  • 入力規則とテーブル参照でミスや表記ゆれを防止
  • KPIアイコンで在庫アラートを可視化できる。

関連

本記事では、 エクセルのデータ活用に役立つ、 テーブルを利用した以下のテクニックを活用しています。