Excel(エクセル)で在庫管理システムを自作する方法!問題点と構築時のポイントを解説


こんにちは。Wakka Inc.メディア編集部です。
在庫管理システムの必要性を感じているものの、導入コストがネックになるケースは珍しくありません。
なかには、使い慣れたExcelで自作したいとお考えの方も多いのではないでしょうか。
そこで本記事では、Excelで在庫管理システムを自作する方法とその問題点について解説します。
なお、記事の後半では在庫管理システムを自作する際の注意点や要点をまとめています。
これからシステムの自作に取り組もうとお考えの方は、ぜひ最後までご覧ください。
「システム開発ハンドブックvol.2 在庫管理システム」では、コストと販売機会の効率化をはかるための在庫管理について、システムの選び方や導入時の注意点などを解説しています。ぜひ、あわせてご確認ください。
自社の在庫管理を最適化したい、在庫管理についてシステム化を計画している方
ぜひ下記の資料から最適なシステムの選び方もご確認ください。
コストと販売機会の効率化をはかるための在庫管理について、システムの選び方や導入時の注意点などを解説しています。

【基礎知識】在庫管理システムとは?

在庫管理システムとは、商品の入出庫など、倉庫や店舗における在庫の出入りを記録し、商品の在庫状況を正確に把握するためのシステムを指します。
自社で商品を製造・販売するためには、欠品や余剰在庫が発生しないよう適正な在庫量を常に維持管理しておくことが重要です。
しかし、人が手作業で在庫を管理していると、作業ミスや在庫数のズレが発生し、業務負担が大きくなりがちです。
在庫管理システムを導入すれば業務の自動化が可能になり、作業ミスも防止できます。
そのため、業務負担の軽減や業務効率化の手段として注目されています。
Excel(エクセル)を使った在庫管理システムの自作方法

在庫管理システムを構築する手軽な方法として、Excelを利用した在庫管理表を作成する方法があります。
本章では、Excelを使って在庫管理システムを自作する方法について見ていきましょう。
無料のテンプレートを使う
Excelは多くの人が日常的に業務で使用しているツールなので、簡易的な在庫管理システムであれば手軽に自作できます。
しかし、手軽でも1からすべて自作すると、かなりの負担がかかります。
そこで、無料で使える在庫管理表のテンプレートを使うのがおすすめです。
テンプレートファイルは、インターネット上でさまざまな種類が無料で公開されているので、使いやすそうなものをダウンロードしてみましょう。
ダウンロードしたテンプレートをベースに、自社の業務に合うようにカスタマイズすれば、時間と労力をカットしながら自作できます。
無料のテンプレートを利用することで、導入にかかるコストの削減が可能です。
Excel(エクセル)の関数を使う
テンプレートをダウンロードしたら、Excelの関数を活用して、自社の業務に適した在庫管理ができるようにテンプレートをカスタマイズしましょう。
在庫管理システムと聞くと大がかりなイメージですが、基本的には在庫量や金額を計算するのが中心です。
そのため、在庫管理の仕組みを作るには、簡単な演算や集計関数が使えるだけでも問題ありません。
Excelでよく使用するのは、次のような関数です。
- 演算(加減乗算)関数
- IF関数
- SUMIF関数
- VLOOKUP関数
1つずつ簡単に見ていきましょう。
演算(加減乗算)関数
在庫管理表に入力された数値をもとに計算処理をするには、演算関数が多く使われます。
例えば、以下の場合に演算関数が効果的です。
- 入庫欄に入力された数値を在庫数に加算し、入庫後の在庫数を求める
- 出庫欄に入力された数値を在庫数から減算し、出庫後の在庫数を求める
- 在庫量を金額で評価するために、商品の原価と在庫数を乗算し、在庫金額を求める
在庫管理に必要なほとんどの計算は、簡単な演算関数だけで実装できるでしょう。
IF関数
IF関数は条件式を記述する関数です。
条件式を記述し、条件を満たしたときと満たしていないときで、実行する処理を分岐させられます。
例えば、安全在庫量の基準値を設定しておき、在庫数が安全在庫数を下回った場合に警告メッセージを表示するといったケースで活用できます。
SUMIF関数
SUMIF関数は、指定した条件を満たした場合のみ、選択範囲内の数値を合計する関数です。
例えば、入庫と出庫の区分を設けて数量項目を同じ列に配置している場合、SUMIF関数を使えば入庫数の合計、出庫数の合計をそれぞれ算出できます。
VLOOKUP関数
VLOOKUP関数では、検索条件を指定し、設定された検索範囲の中から条件に該当するデータを抽出できます。
例えば、商品検索画面を別シートに作成し、画面から指定された商品コードをもとに在庫管理表から商品情報を呼び出して表示できます。
Excel(エクセル)のマクロを使う
関数では複雑になってしまったり、実現が難しかったりする処理も、Excelのマクロを使用することでシンプルに実現できることがあります。
関数はExcelのシートのセルに埋め込まれ、関数が参照しているセルの値が更新されるたびに再計算されます。
そのため、関数を駆使した複雑な処理を大量に記述していると、Excel自体が重くなって動きが悪くなることも珍しくありません。
しかし、マクロの場合は呼び出す操作をしたときだけ処理を実行するため、Excel自体が重くなるといった影響はありません。
マクロは、簡単な処理ならレコーダーの機能を使って、操作を記録する方法で誰でも手軽に作成できます。
複雑な処理をプログラミングすることも可能ですが、その場合はVBAと呼ばれるプログラミング言語のスキルが必要です。
Excel(エクセル)で在庫管理システムを自作するメリット

本章では、Excelを使って在庫管理システムを自作するメリットについてお伝えします。
コストがかからない
自社でWindowsパソコンを導入していれば、Microsoft社のOffice製品がインストールされており、日常業務で利用されていることも少なくありません。
その場合は、すでにパソコンにインストールされているExcelで在庫管理システムを自作できるため、追加の導入コストがかかりません。
また、日常的にExcelを業務で使用している人であれば、基本的な操作方法は把握しているものです。
そのため、教育コストをかけることなく在庫管理システムを自作できます。
使い慣れたソフトのため定着しやすい
前述したように、多くの企業ではWindowsを搭載したパソコンを導入しており、日常業務でExcelを利用する場面は珍しくありません。
そのため、Excelを使い慣れている人も多いため、在庫管理システムを導入する際の心理的なハードルが低くなります。
使い慣れたソフトであれば使用するのに抵抗も少ないため、管理表の導入・運用が現場での定着が容易です。
手早く作れて使いながら手軽に修正できる
Excelを使用した在庫管理システムなら、高いITスキルがなくても手早く構築できます。
まずは作ってみて、使いながら改善していく方法も可能です。
仕様変更や改修をするのにも高度なスキルは必要ないため、運用しながら課題を見つけ、徐々にブラッシュアップしていけるのもメリットです。
Excel(エクセル)で自作した在庫管理システムには限界がある!

Excelで自作した在庫管理システムは、手早く作れてすぐに運用できるのがメリットですが、使い続けているとやがて限界がやってきます。
では、どのようなところで限界が訪れるのでしょうか。
本章では、Excelで自作した在庫管理システムの限界について解説します。
データの保存量に限界がある
在庫管理システムとしてデータを蓄積するのであれば、データは一元管理されているべきです。
しかし、Excelでは1シートに保存できるデータ量が限られています。
Excelの1シートに保存できる行数は1,048,576行(Excel2003以下のバージョンでは65,536行)です。
保存できる行数の上限に達してしまうと、別のシートに保存しなければなりません。
シートが分かれているのでは、データが一元管理されている状態とは言えません。
また、関数やマクロの内容もそのままでは使えない可能性があるため、1シートに保存できる行数の上限が事実上の限界と捉えられます。
リアルタイムで更新できない
Excelでは、同じファイルを複数の担当者が同時に更新できません。
そのため、在庫データをリアルタイムで反映させるのが困難です。
ファイルの共有設定を行えば同時に更新することも可能ですが、代わりに機能制限が出てきます。
機能が制限されることで、在庫管理システムの運用に支障をきたすリスクが高まります。
また、複数人で同時編集している場合、下記のようなリスクも無視できません。
- 編集内容が正しく反映されないことがある
- ファイルが破損しやすい
複数の拠点で利用する場合などは、そもそも同じファイルの同時編集は不可能です。
在庫データがリアルタイムに更新できないと、受注時に在庫を照会して引き当てるといった業務がリアルタイムに実行できません。
そのような状態になると、業務の効率は著しく低下してしまいます。
負荷が高くなると処理が遅くなる
そもそもExcelは、在庫管理専用のデータベースシステムではありません。
通常の利用時でも処理が速いとは言えませんが、データ量が増えたり同時に作業する人が増えたりすると、負荷が高くなってさらに処理が遅くなります。
また、大量のデータに対して関数を埋め込むと、何か操作をするたびに関数が再計算されます。
その結果、データの更新に非常に時間がかかり、作業が非効率化しかねません。
Excelを在庫管理に利用する際は、下記の点に注意して快適に操作できる範囲にとどめておきましょう。
操作の快適性が保たれていないと処理が重くなり、業務の効率が一気に低下することになります。
- データが大量になりすぎない
- 多くの関数を埋め込みすぎない
複雑になるとメンテナンスが困難
Excelを利用した在庫管理システムは、手早く自作できて運用しながら手軽に修正できるのがメリットです。
しかし、手軽に修正できるために突貫工事でどんどん改修されていくケースが多いようです。
はじめから、一貫した設計の考え方のもとに改修されていれば問題ありません。
しかし、修正が必要になったときにその場の思いつきで手軽に修正を重ねてしまうと、当初の設計の考え方から徐々にずれて、処理の整合性がとれない複雑な状態になっていきます。
何度も修正や機能追加を重ねてきたシステムは、あとから見ても修正した当時の意図が理解できないことも多く、しだいにメンテナンスが困難になります。
メンテナンスが困難な状態では、万が一トラブルが発生して修正が必要になったときに、誰も対応できないといったことになりかねません。
ファイルが破損するリスクがある
Excelで管理するデータ量が増え、同時に編集することが多くなってくると、ファイルが破損するリスクも高くなります。
個人のパソコンに保存しているファイルではなく、ネットワーク上で複数人が利用しているファイルなので、なおさら破損リスクが高まります。
また、Excelで作成した在庫管理システムは、1つのファイルにすべての機能やデータが保存されているものです。
そのため、ファイルが破損してしまうと業務に多大な影響が発生します。
Excelの在庫管理にはこうした限界が存在するため、取り扱いには注意が必要です。
より本格的に在庫を管理する場合は、Excel以外の方法でシステムを構築することをおすすめします。
自社の在庫管理を最適化したい、在庫管理についてシステム化を計画している方
ぜひ下記の資料から最適なシステムの選び方もご確認ください。
コストと販売機会の効率化をはかるための在庫管理について、システムの選び方や導入時の注意点などを解説しています。

Excel(エクセル)以外で在庫管理システムを自作する方法

Excelを利用した在庫管理システムのメリットと限界について解説してきました。
実際のところ、Excelの在庫管理システムが快適に利用できるのは以下の環境が目安です。
- 1シートのデータ量(商品点数)1万件程度
- 利用人数5名以下
- 営業拠点1カ所
では、Excelの在庫管理システムを快適に利用するのが難しい場合は、どうすれば良いのでしょうか。
本章では、Excel以外で在庫管理システムを自作する方法について解説します。
Accessを使用する
Accessは、Excelと同じくMicrosoft社のOffice製品のラインナップに含まれるソフトウェアです。
簡易版ではあるものの、データベースソフトに分類されます。
表計算ソフトのExcelと比べれば、データベースソフトであるAccessの方が、より強固なシステムの構築が可能です。
データベースソフトは、データを保存して取り扱うのが目的です。
そのため、データが大量になってもデータを扱う操作が遅くなることなく、安全に利用できるように設計されています。
Accessはデータベースの機能がメインですが、他にもデータベースを扱うための便利な機能がついています。
そのため、Excelよりも本格的で使い勝手の良い仕組みづくりが可能です。
Accessに搭載されている主な機能は次の通りです。
- テーブル(表)
- クエリー
- フォーム
- レポート
- マクロ
以下でそれぞれ簡単に紹介します。
テーブル
テーブルとは、データを保存する器のことを指します。
データベースソフトの本体にあたるメイン機能と言えるのがテーブルです。
在庫管理システムでは、商品情報や在庫情報をテーブルとして定義し、さらにテーブルそれぞれに持つ項目も定義します。
クエリー
クエリーとは、データベースに定義されたテーブルに対して、問い合わせを行う機能です。
商品コードを指定して、在庫情報から指定した商品の在庫データを取り出すといった問い合わせ機能を作成できます。
フォーム
フォームは、データ登録や検索などの操作を行う画面を構築する機能です。
画面から登録や検索などの処理を実行すると、入力されたデータがクエリーを通して処理され、テーブルに格納したり、検索条件に合ったデータをテーブルから取得して画面に出力したりできます。
レポート
レポートは、帳票を作成する機能です。
実行するとクエリーを通して必要なデータが取得され、定義したレイアウトにしたがって帳票が出力されます。
必要なデータをテーブルに格納する仕組みがあれば、レポート機能を使って入出庫管理表、出荷伝票、見積書などの帳票が簡単に作成できます。
マクロ
より複雑な処理を構築したい場合は、マクロを使ってプログラミングも可能です。
マクロは、Excelにも搭載されているものと共通の仕様で、VBAと呼ばれる言語で作成できます。
データベースの知識があればより質の高いシステム作りが可能
Accessは、Excelと比べて大量データでも効率的に処理できます。
そのため、在庫データを一元管理でき、リアルタイムで在庫状況の把握が可能です。
ただし、効率よくデータを保存し、保存したデータを高速に取り出すなど、快適に利用できるようにするにはデータベースに関する知識が必要です。
もちろん、Excelのように直感的に利用するのも可能ですが、Excelと比較すると操作難易度は上がるので注意しましょう。
また、Excelと同様に、Accessでも在庫管理システムのテンプレートが無料で公開されています。
まずは既存のテンプレートを入手して利用することで、自作のハードルも下げられます。
プログラミングでWebサービスを作る
プログラミング言語を使って、在庫管理システムのプログラムを自作する方法もあります。
近年は経験が少なくても使いやすいプログラミング言語が増えたこともあり、以前より手軽なプログラムが可能となりました。
また、生成AIの登場もあり、作業の自動化もできるようになったため、プログラミングのハードルはより下がっています。
しかし、プログラミングによって在庫管理システムを自作するためには、プログラミング言語の知識はもちろんですが、以下も含めた総合的なプログラミングのスキルが必要です。
- SQL
- HTML
- JavaScript
SQL
Webアプリケーションを開発するときは通常、データを保存するためのデータベースと組み合わせて利用します。
データベースにアクセスするためには、SQLという専用の言語を使用しなければなりません。
SQLを使えば、データベースへのデータ登録、更新、削除、検索などの操作が可能です。
HTML
入力画面や検索画面など、システムに必要な画面機能を構築するには、HTMLというプログラミング言語も組み合わせて使う必要があります。
ブラウザに表示されるWebアプリケーションの画面は、主にHTMLで作成されています。
JavaScript
JavaScriptはWeb画面に動きをつけるもので、HTMLの中で合わせて利用されるものです。
HTMLだけでは動きのない静的な画面ですが、JavaScriptを使えば画面の入力内容をチェックしてエラーメッセージを返すというように、画面に動きをつけられます。
在庫管理システムの自作にPythonがおすすめの理由

在庫管理システムをプログラミングで自作するなら、Pythonがおすすめです。
Pythonは、さまざまなソフトウェアやアプリケーションのプログラミングで利用されている開発言語です。
Pythonには以下のようなメリットがあります。
- シンプルな構文で開発しやすい
- Webフレームワークが豊富
- データベースとの連携が容易
- 自動化や通知機能を実装できる
- バーコードスキャンやIoT機器と連携が可能
- クロスプラットフォームに対応している
Pythonの導入を検討する際の参考にしてください。
シンプルな構文で開発しやすい
Pythonはシンプルな構文が特徴の言語です。
プログラミング言語の中には、文法が難解なために、コーディングの作業量が増加するものもあります。
しかし、Pythonはシンプルな構文でコーディングができるうえに、コードの判別がしやすいため、初心者でも扱いが容易です。
すでに記載されたコードの修正もしやすいので、万が一バグが発生してもスムーズに対応できます。
さらに生成AIにも対応がしやすいため、プログラミングの自動化を考えている際にもおすすめです。
なお、Pythonは関連するコミュニティが豊富であり、情報収集が簡単です。
運用につまずいても解決策が見つかりやすいので、プログラミングの経験値が少ない企業でも導入しやすいです。
Webフレームワークが豊富
Pythonは世界的に利用されているプログラミング言語であるため、Webフレームワークが豊富な点も特徴です。
統計・計算はもちろん、画像処理や音声処理などのWebフレームワークがあるため、さまざまな用途に対応できます。
そもそもPythonは汎用性が高く、シンプルなWebアプリケーションはもちろん、高度なソフトウェアの開発にも対応ができる言語です。
そのため、専門性が高い業務の企業でも導入がしやすく、在庫管理システム以外のシステムを自作したいときにも適しています。
データベースとの連携が容易
データベースとの連携が容易な点も、Pythonを導入するメリットとして挙げられます。
Pythonはデータ分析の現場でも多く利用されており、データベースとの接続がしやすい点が特徴です。
初心者でも簡単なコーディングで接続できるので、膨大なデータを効率的に分析する体制を手軽に整えられます。
さらに抽出したデータの加工もしやすいので、データ分析のさらなる効率化も可能です。
特に在庫管理システムのように、蓄積された膨大なデータを活用するシステムであれば、Pythonは非常に相性が良いプログラミング言語です。
自動化や通知機能を実装できる
Pythonは自動化や通知機能を在庫管理システムに実装するうえでも役立ちます。
汎用性が高いこともあり、PythonはゲームやSNSの機能など、さまざまなツールやコンテンツの開発に用いられています。
シンプルなコーディングでほしい機能を作成できるため、初心者でも在庫管理システムのカスタマイズが可能です。
さらにPythonは世界的にユーザーが多いプログラミング言語だけあって、開発に関する情報やライブラリが豊富です。
機能を開発するために必要な情報を集めやすいうえに、ライブラリを活用すれば開発にかかる時間を大幅に短縮できます。
バーコードスキャンやIoT機器と連携が可能
PythonはバーコードスキャンやIoT機器との連携がしやすい点も魅力です。
在庫管理システムにおいて、バーコードスキャンは活用されるケースが多い機能ですが、Pythonはバーコードの検出に必要なプログラムの作成にも利用できます。
バーコードだけでなくQRコードにも対応できるため、現場に合わせたプログラムを構築するうえで便利です。
また、PythonはIoT機器との連携においても活用しやすいプログラミング言語です。
さらに、PythonはIoT機器の開発現場でも積極的に利用されており、特にデータの分析や可視化において高い効果を発揮します。
クロスプラットフォームに対応している
クロスプラットフォームに適した在庫管理システムを開発するうえでも、Pythonはおすすめです。
理由としてPythonはさまざまなOSに対応しており、ソースコードを直接実行するタイプのプログラミング言語だからです。
そのため、クロスプラットフォームにスムーズに対応できます。
専用のフレームワークも公開されているので、初めてクロスプラットフォームの在庫管理システムを作成する際でも安心です。
なお、クロスプラットフォームについて詳しく知りたい方は、以下の記事を参考にしてください。
在庫管理システムを自作する際に押さえておきたい3つのポイント

在庫管理システムを導入するなら、自社の業務が改善されるように、効果的な方法をとりたいものです。
せっかく自作したのに使われないシステムになってしまう、といった失敗は避けましょう。
本章では、在庫管理システムを自作する際に、しっかり効果を出すために押さえておきたい3つのポイントを解説します。
在庫管理システムを導入する目的を明確にする
自作してでも在庫管理の仕組みを導入しようと考えているのであれば、解消したい問題が明確になっているのではないでしょうか。
どのような問題を解消したいのか、目的を明確にしてブレないようにするのが大切です。
いざ、システムを導入しようとなると、あれもこれもと欲張りがちです。
しかし、機能要件を過度に膨らませると、当初の目的がブレてしまい、十分な導入効果を得られなくなってしまいます。
例えば、入出庫時の記録ミスをなくしたい場合、その目的を明確にすることで、記録ミスを防ぐ仕組み作りに集中しやすくなります。
また、目的が明確になっていれば、在庫管理システムの導入効果を評価する基準の具体化も可能です。
業務フローや管理要素を可視化する
在庫管理システムを導入する目的が明確になったら次に、現状がどうなっているかを把握します。
どのような問題点があるかを把握するために、まずは詳細な業務フローの可視化が必要です。
業務フローを可視化するとともに、さらに業務の中で具体的に何を確認してどのような判断をしているかといった、管理要素も明らかにしておきます。
先ほどの入出庫時の記録ミスを防ぐ例であれば、具体的な要素を確認しておきましょう。
- 入出庫時に何を確認しているか
- 商品や数量が正しいことをどのようにチェックしているか
在庫管理システムに必要な機能を見極める
現状の業務フローや管理要素を明らかにしたら、目的を達成するためにどの部分を改善すべきかを検討します。
つまり、現在の問題を解消するために、在庫管理システムでどのような機能を採り入れるかを見極めることです。
例えば、入出庫時の記録ミスを改善するのであれば、バーコードやRFIDを活用した在庫商品の管理を実施し、数え間違いや保管場所の間違いを防ぐなどが挙げられます。
達成すべき目的を最初に明確にしておくことで、必要な機能も正しく見極められます。
在庫管理システムの自作が難しい場合は外注する
プログラムを自作するには多くの知識とスキルが必要です。
これらの技術スキルを持った人材が自社にいれば、在庫管理システムの自作は可能です。
プログラミング言語を駆使すれば、ExcelやAccessで自作するよりも使い勝手が良く安定したシステムが構築できます。
しかし、自社にプログラミングのスキルを持った人材がいない場合や、いても業務が忙しくて開発にリソースを割けない場合も想定されます。
その場合は、システム開発会社に依頼して在庫管理システムを開発してもらう選択肢もあります。
システムのイメージが具体的に固まっていなくても、まずは相談から問い合わせてみるのがおすすめです。
自社の要件にあった在庫管理システムを構築しよう

在庫管理システムは、簡易的に導入しようと思えばExcelで手早く構築でき、本格的な機能を備えたシステムも導入できます。
しかし、数ある選択肢の中でどの手法を選ぶかは、以下の点をしっかり押さえることに尽きます。
- 自社で抱えている問題をいかに解消するか
- 自社のビジネスをいかに発展させるか
自社のビジネスが目指すゴールを見据えて、最適な在庫管理システムを構築するために本記事が参考になれば幸いです。
自社の在庫管理を最適化したい、在庫管理についてシステム化を計画している方
ぜひ下記の資料から最適なシステムの選び方もご確認ください。
コストと販売機会の効率化をはかるための在庫管理について、システムの選び方や導入時の注意点などを解説しています。

お役立ち資料の無料DL

システム開発ハンドブックvol.2 在庫管理システム
コストと販売機会の効率化をはかるための在庫管理について、システムの選び方や導入時の注意点などを解説したWakka Inc.のホワイトペーパです。
以下のような方にオススメです。
・自社の在庫管理を最適化したい方
・在庫管理についてシステム化を計画している方
・在庫管理システムの導入メリットを詳しく知りたい方
