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


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

本記事では、Excel・Access・プログラミングそれぞれで在庫管理システムを自作する方法について解説します。
それぞれの方法の特徴は以下の通りです。
※表は、横にスクロールできます
| 方法 | Excel | Access | プログラミング |
| メリット | ・Windowsに標準装備されているため手軽に利用できる。 ・導入コストがかからない。 ・日常的に利用するソフトウェアであるため定着しやすい。 ・高度なスキルを必要としないため運用・修正が簡単。 | ・データベースソフトであるため在庫管理に活用しやすい。 ・Excelより機能性に優れている。 ・データの管理・検索・分析などができる。 ・低コストで導入できる。 ・現場や従業員に合った入力画面を設定できる。 ・改ざんやデータ破損に強い。 ・データが大量でも管理できる。 ・カスタマイズ性が高い。 | ・OSにとらわれずに在庫管理システムを運用できる。 ・任意の機能やレイアウトで構築できる。 ・構築次第ではほかのシステムと連携できる。 ・自社の業務フローに合致したシステムを実現できる。 ・構築方法によっては、高いセキュリティを実現できる。 |
| デメリット | ・作業時間がかかりやすい。 ・マクロや関数の知識がないと運用が難しい。 ・ヒューマンエラーが発生しやすい。 ・数式が壊れると管理に影響が出る。 ・データ容量に限界がある。 ・セキュリティ面が弱く、適切な共有管理が難しい。 ・在庫数が膨大になるとファイルが複雑化し、管理が難しくなる。 | ・ライセンスを購入しなければならない。 ・Excelほど普及していないため、利用できる従業員が限られる。 ・高度な運用をするなら専門知識が欠かせない。 | ・プログラミングの知識がないと自作も運用も難しい。 ・難易度が高いうえに時間とコストがかかる。 ・外注した際のコストが高い。 ・自社のITスキルが不足していると運用も外注しなければならない。 |
| 難易度 | 初心者向け | 中級者向け | 上級者向け |
| 費用感 | ほとんどかからない | 数万円程度 | 数十万~数百万円程度 |
| こんな企業におすすめ | ・在庫数や拠点数が少ない小規模な企業 ・扱っている商品の種類が少ない企業 ・在庫の移動が少ない企業 | ・複数人で在庫管理を行っている企業 ・独自の業務フローがある企業 ・大容量データを定例処理している企業 | ・自社にプログラミングができる人材がいる企業 ・既存のシステムが自社の業務フローに適合しない企業 ・余裕のある予算を確保できる企業 |
いずれの方法にもメリットとデメリットがあり、自社の状況やコストに合ったものを選ぶ必要があります。
自社の業務フローに完全に合致させたい場合は、プログラミングによる自作や外注が有力な選択肢となりますが、必ずしも費用対効果が高いわけではありません。
自社の在庫数や業務の範囲などが小規模であれば、Excelで自作するだけで十分な場合もあります。
自社の課題を分析し、適切な自作方法を選ぶことが重要です。
【方法1】Excel(エクセル)を使った在庫管理システムの自作方法

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

Accessは、Excelと同じくMicrosoftのOffice製品のラインナップに含まれているソフトウェアです。
簡易的な位置づけではあるものの、データベースソフトに分類されます。
表計算ソフトのExcelと比べると、データベースソフトであるAccessの方が、より堅牢で、管理・運用しやすいシステムの構築が可能です。
そもそも、データベースソフトは、データを保存して取り扱うのが目的です。
そのため、データが大量になっても比較的効率的に処理できるよう設計されていますが、データ量や設計によっては処理速度が低下する場合もあります。
Accessはデータベースの機能がメインですが、他にもデータベースを扱うための便利な機能が搭載されています。
そのため、Excelよりも本格的で使い勝手の良い仕組み作りが可能です。
Accessに搭載されている主な機能は次の通りです。
- テーブル(表)
- クエリー
- フォーム
- レポート
- マクロ
以下でそれぞれ簡単に紹介します。
テーブル
テーブルとは、データを保存する器のことを指します。
データベースソフトの本体にあたるメイン機能と言えるのがテーブルです。
在庫管理システムでは、商品情報や在庫情報をテーブルとして定義し、さらにそれぞれのテーブルに入力する項目も定義します。
クエリー
クエリーとは、データベースに定義されたテーブルに対して、データを検索・抽出する機能です。
商品コードを指定して、在庫情報から指定した商品の在庫データを取り出すといった問い合わせ機能を作成できます。
フォーム
フォームは、データ登録や検索などの操作を行う画面を構築する機能です。
画面から登録や検索などの処理を実行すると、入力されたデータがクエリーを通じて処理され、テーブルに格納したり、検索条件に合ったデータをテーブルから取得して画面に出力したりできます。
レポート
レポートは、帳票を作成する機能です。
実行するとクエリーを通して必要なデータが取得され、定義したレイアウトにしたがって帳票が出力されます。
必要なデータをテーブルに格納する仕組みがあれば、レポート機能を使って入出庫管理表・出荷伝票・見積書などの帳票が簡単に作成できます。
マクロ
より複雑な処理を構築したい場合は、マクロを使ったプログラミングも可能です。
マクロはExcelと同様にVBA(Visual Basic for Applications)を用いて作成できますが、Access固有のオブジェクトや仕様も存在します。
データベースの知識があればより質の高いシステム作りが可能
Accessは、Excelと比べて大量データでも効率的に処理できます。
そのため、在庫データを一元管理でき、適切に運用すればリアルタイムに近い形で在庫状況を把握可能です。
ただし、効率良くデータを保存し、保存したデータを高速に取り出すなど、快適に利用できるようにするにはデータベースの操作・運用に関する知識が必要です。
もちろん、Excelのように直感的に利用するのも可能ですが、Excelと比較すると操作難易度は上がるので注意しましょう。
一方で、Excelと同様に、Accessでも在庫管理システムのテンプレートが無料で公開されています。
まずは既存のテンプレートを入手して利用することで、自作のハードルも下げられるので、積極的に活用しましょう。
【方法3】プログラミング(Python)で在庫管理システムを自作する
プログラミング言語を使って、在庫管理システムを自作する方法もあります。
近年は経験や知識が少なくても使いやすいプログラミング言語が増えたこともあり、以前より手軽にプログラミングが可能になりました。
また、生成AIの登場もあり、作業の自動化もできるようになったため、プログラミングのハードルはより下がっています。
しかし、プログラミングによって在庫管理システムを自作するためには、プログラミング言語の知識はもちろんですが、用途によっては、以下のような関連技術の知識も必要です。
- SQL
- HTML
- JavaScript
それぞれのスキルについて解説します。
SQL
Webアプリケーションを開発する際、一般的にはデータを保存するためのデータベースと組み合わせて利用します。
データベースにアクセスするためには、SQLと呼ばれる専用の言語を使用しなければなりません。
SQLを使えば、データベースへのデータ登録・更新・削除・検索などの操作が可能です。
HTML
入力画面や検索画面など、システムに必要な画面機能を構築するには、HTMLと呼ばれるマークアップ言語も組み合わせて使用することが一般的です。
ブラウザに表示されるWebアプリケーションの画面は、主にHTMLで作成されています。
JavaScript
JavaScriptはWeb画面に動きを付けるためのプログラミング言語で、HTMLと組み合わせて利用されます。
HTMLだけでは動きのない静的な画面になりますが、JavaScriptを使えば画面の入力内容をチェックしてエラーメッセージを返すといったような、画面に動きを付けられます。
【方法4】ノーコード・ローコードツールでアプリケーションを自作する
在庫管理システムを自作するなら、ノーコード・ローコードツールも役立ちます。
プログラミングによる自作は、コードや開発言語の知識が不可欠であり、経験値がないと実践は困難です。
しかし、ノーコード・ローコードツールを活用すれば、簡単な操作で在庫管理に利用できるアプリケーションを自作できます。
近年は多種多様なノーコード・ローコードツールが登場しており、社内で利用するアプリケーションであれば、専門知識がなくても自作できるようになりました。
ノーコード・ローコードツールなら、自社の業務フローに合致した機能を搭載したアプリケーションを実現できるうえに、ゼロからプログラミングで自作するよりスピーディーに構築できます。
ただし、ツールによってはベースとなるデータをExcelやスプレッドシートなどで作成する必要があるので注意しましょう。
また、ノーコード・ローコードツールは誰でも利用できるため、適切に管理しないと従業員が自分用のアプリケーションを次々と作ってしまう状況になりがちです。
その結果、本当に必要なアプリケーションの所在や役割が不明確になったり、従業員の退職などで運用方法が分からなくなったりするリスクが発生します。
ノーコード・ローコードツールを導入する際は、無駄なアプリケーションを自作せず、適切に管理する体制を整えておきましょう。
在庫管理システムの自作にPythonがおすすめの理由

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

在庫管理システムを自作する際に押さえておきたい3つのポイント

在庫管理システムを導入するなら、自社の業務が改善されるように、効果的な方法をとりたいものです。
せっかく自作したのに使われないシステムになってしまう、といった失敗は避けましょう。
本章では、在庫管理システムを自作する際に、しっかり効果を出すために押さえておきたい以下のポイントを解説します。
- 在庫管理システムを導入する目的を明確にする
- 業務フローや管理要素を可視化する
- 在庫管理システムに必要な機能を見極める
それぞれのポイントを押さえておけば、在庫管理システムの定着率を引き上げられます。
在庫管理システムを導入する目的を明確にする
自作してでも在庫管理の仕組みを導入しようと考えているのであれば、解消したい問題が明確になっているのではないでしょうか。
それならば、どのような問題を解消したいのか、目的を明確にしてブレないようにするのが大切です。
いざ、システムを導入しようとなると、「あの機能もほしい」「インターフェースはこうしたい」と要望が多くなりがちです。
しかし、機能要件を過度に膨らませると、当初の目的がブレてしまい、十分な導入効果を得られなくなってしまいます。
例えば、入出庫時の記録ミスをなくしたい場合、その目的を明確にすることで、記録ミスを防ぐ仕組み作りに集中しやすくなります。
また、目的が明確になっていれば、在庫管理システムの導入効果を評価する基準の具体化も可能です。
業務フローや管理要素を可視化する
在庫管理システムを導入する目的が明確になったら、次に、在庫管理の現状や問題点を正確に把握しましょう。
どのような問題点があるかを把握するために、まずは詳細な業務フローの可視化が必要です。
業務フローを可視化するとともに、さらに業務の中で具体的に何を確認してどのような判断をしているかといった、管理要素も明らかにしておきます。
先ほどの入出庫時の記録ミスを防ぐ例であれば、具体的な要素を確認しておきましょう。
- 入出庫時に何を確認しているか
- 商品や数量が正しいことをどのようにチェックしているか
問題点に対する解決策を明確にしておけば、在庫管理システムに必要な機能を決めやすくなります。
在庫管理システムに必要な機能を見極める
現状の業務フローや管理要素を明らかにしたら、目的を達成するためにどの部分を改善すべきかを検討します。
つまり、現在の問題を解消するために、「在庫管理システムでどのような機能を導入するか」を見極めることです。
例えば、入出庫時の記録ミスを改善するのであれば、バーコードやRFIDを活用した在庫商品の管理を実施し、数え間違いや保管場所の間違いを防ぐなどが挙げられます。
達成すべき目的を最初に明確にしておくことは、必要な機能も正しく見極めるうえで重要です。
また、必要のない機能も判別できるため、無駄なコストの削減にもつながります。
在庫管理システムの自作が難しい場合は外注する

在庫管理システムに限らず、プログラムを自作するには多くの知識とスキルが必要です。
プログラミングのスキルを持つ人材が自社にいれば、在庫管理システムの自作は可能です。
プログラミング言語を駆使すれば、ExcelやAccessで自作する場合と比べて、要件に応じた柔軟で拡張性の高いシステムを構築しやすくなります。
しかし、自社にプログラミングのスキルを持った人材がいない場合や、業務が多忙なためにシステム開発にリソースを割けない場合もあるでしょう。
その場合は、システム開発会社に依頼して在庫管理システムを開発してもらう選択肢もあります。
外注は自作よりコストがかかるケースが多いものの、ノウハウを持った専門家がサポートしてくれるため、在庫管理システムのスムーズな導入が可能です。
開発会社によってはメンテナンスやアップデートのサポートもしてくれるので、スムーズな運用をしやすくなります。
システムのイメージが具体的に固まっていなくても、まずは相談から問い合わせてみるのがおすすめです。
自社の要件にあった在庫管理システムを構築しよう

在庫管理システムは、簡易的に導入しようと思えばExcelで手早く構築でき、本格的な機能を備えたシステムも導入できます。
しかし、数ある選択肢の中でどの手法を選ぶかは、以下の点をしっかり押さえることに尽きます。
- 自社で抱えている問題をいかに解消するか
- 自社のビジネスをいかに発展させるか
自社のビジネスが目指すゴールを見据えて、最適な在庫管理システムを構築するために本記事が参考になれば幸いです。
WaGAZINE読者さま限定!
システム開発ハンドブックvol.2
在庫管理の最適化やシステム化を検討している方にオススメ
お役立ち資料の無料DL

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









