【2025年】スプレッドシートで在庫管理!設計から自動化ガイド

はじめに:その在庫管理、手書きで消耗していませんか?

「在庫数が合わない…」「最適な発注タイミングが分からない…」「毎日の在庫管理が面倒で本業に集中できない…」。

個人事業主の方や中小企業の経理・運営担当者の方にとって、在庫管理は利益に直結する重要な業務でありながら、多くの時間と手間を奪う悩みの種ではないでしょうか。

高価な専用の在庫管理システムを導入するにはコストがかかりすぎる。かといって、手書きでの管理では、共有が面倒だったり、ミスや計算間違いが起こりがちです。

そんな悩みを解決するのが、Googleスプレッドシートです。

実は、スプレッドシートを使えば、コストを一切かけずに、高機能で自動化された在庫管理システムを自作することが可能です。

本記事では、単なる使い方にとどまらず、失敗しないための「設計思想」から、関数やスクリプト(GAS)を活用した「高度な自動化」まで、スプレッドシート在庫管理のすべてを網羅的に解説します。この記事を読み終える頃には、あなたも自社のビジネスに最適化された在庫管理システムを手に入れているはずです。

1. なぜ在庫管理にスプレッドシートが最適なのか?メリット・デメリットを徹底比較

まずは、在庫管理にスプレッドシートを選ぶべき理由と、知っておくべき注意点を整理しましょう。

スプレッドシートで在庫管理を行う5つのメリット

  1. コストが完全無料 Googleアカウントさえあれば、誰でも無料で利用できます。初期費用や月額費用を気にすることなく始められるのは最大の魅力です。
  2. リアルタイムで共有・同時編集が可能 クラウドベースなので、複数のスタッフがいつでもどこでも最新の在庫状況を確認し、同時に編集できます。「あのファイル、誰が持ってる?」といったやり取りはもう不要です。
  3. 関数やGASで柔軟にカスタマイズ・自動化できる 自社の運用に合わせて、管理項目や計算方法を自由自在にカスタマイズできます。さらに、後述するGoogle Apps Script (GAS)を使えば、メール通知などの高度な自動化も可能です。
  4. スマホやタブレットからでもアクセス可能 専用アプリを使えば、スマートフォンやタブレットからでも簡単に在庫の確認や入出庫の入力ができます。倉庫や店舗にいながら、その場で作業を完結できます。
  5. Googleフォームなど他サービスとの連携が容易 Googleフォームと連携させれば、入力専用のシンプルなフォームを作成でき、入力ミスを大幅に削減できます。

知っておくべき3つのデメリットと限界

  1. データ量が増えると動作が重くなる 扱う商品点数や取引履歴が数万行を超えてくると、スプレッドシートの動作が遅くなる可能性があります。
  2. 人的ミスが起こりやすい 自由度が高い反面、誤ったセルに関数を入力してしまったり、数式を消してしまったりするリスクがあります。ルール作りや保護設定でカバーする必要があります。
  3. 高度な機能は難しい バーコードを読み取るハンディターミナルとの連携や、複雑な会計システムとの連携など、専門的な機能は専用システムに劣ります。

これらのメリット・デメリットを理解した上で、スプレッドシートは特に小〜中規模のビジネスにとって、費用対効果が極めて高い選択肢であると言えます。

2.【設計編】失敗しない在庫管理システムの土台作り

在庫管理で失敗する多くのケースは、いきなりシートを作り始めてしまうことです。長く安定して使えるシステムを構築するには、最初の「設計」が最も重要です。

Step 1. 在庫管理の「目的」を明確にする

まず、「何のために在庫を管理するのか」を具体的にしましょう。目的によって、必要な機能や管理項目が変わってきます。

  • 例1:欠品を防ぎ、販売機会の損失をなくしたい → 発注点管理が重要
  • 例2:過剰在庫を減らし、キャッシュフローを改善したい → 在庫回転率や滞留在庫の分析が必要
  • 例3:単純に日々の入出庫管理を効率化したい → 入力の手間をいかに減らすかが鍵

Step 2. 管理に必要な項目を洗い出す

目的が明確になったら、管理に必要な項目を洗い出します。

項目種別項目名説明
必須項目商品コード商品を一意に識別するための番号(JANコードなど)
商品名具体的な商品名
現在庫数今ある在庫の数(関数で自動計算)
入庫数仕入れなどで在庫が増えた数
出庫数販売などで在庫が減った数
日付入出庫が発生した日付
便利項目発注点これを下回ったら発注が必要になる在庫数
ロケーション在庫の保管場所(例:A棚-1)
仕入先商品の仕入先名
担当者入出庫を処理した担当者名
備考その他特記事項

Google スプレッドシートにエクスポート

Step 3. 「マスタ」と「トランザクション」を分ける

データベース設計の基本ですが、情報を役割ごとにシートで分割します。これにより、管理がしやすく、エラーも起きにくくなります。

  • 商品マスタシート: 商品の基本情報を一元管理する場所。商品コード、商品名、定価、仕入先、発注点などを記載します。
  • 入出庫履歴シート: 「いつ」「どの商品が」「いくつ」入出庫されたか、日々の動き(トランザクション)をひたすら記録していくシートです。
  • 在庫一覧シート: 「商品マスタ」と「入出庫履歴」のデータを元に、現在の在庫状況を関数でリアルタイムに表示するダッシュボード的なシートです。

この3つのシートに分けるのが、失敗しないシステムの基本構造です。

3.【実践編】コピペでOK!在庫管理システムの作り方

それでは、設計に基づいて実際にシステムを構築していきましょう。以下の手順通りに進めれば、誰でも完成させることができます。

Step 1. 3つの基本シートを作成する

まず、スプレッドシートを新規作成し、シート名をそれぞれ「商品マスタ」「入出庫履歴」「在庫一覧」に変更します。そして、各シートの1行目に、先ほど設計した項目名を入力してください。

Step 2. 「在庫一覧」シートを関数で自動計算する

ここからが本番です。「在庫一覧」シートに、関数を使って各商品の現在の在庫数を自動で表示させます。

1. 商品情報をマスタから自動表示 「在庫一覧」シートのA列に商品コードを入力したら、B列の商品名が「商品マスタ」シートから自動で表示されるようにします。B2セルに以下のVLOOKUP関数を入力し、下の行へオートフィルでコピーします。

=IF(A2<>"", VLOOKUP(A2, 商品マスタ!A:C, 2, FALSE), "")

*IF(A2<>"", ... , "") は、A2セルが空欄でなければVLOOKUPを実行し、空欄なら空欄を表示する、というエラー防止の記述です。

2. 入庫数と出庫数を合計する 次に、「入出庫履歴」シートから商品ごとの入庫数と出庫数を合計します。「在庫一覧」シートのC2(入庫合計)とD2(出庫合計)に、以下のSUMIF関数をそれぞれ入力します。

C2(入庫合計)セル:

=SUMIF(入出庫履歴!B:B, A2, 入出庫履歴!D:D)

D2(出庫合計)セル:

=SUMIF(入出庫履歴!B:B, A2, 入出庫履歴!E:E)

3. 現在庫数を計算する E2(現在庫数)セルに、単純な引き算の式を入力します。

E2(現在庫数)セル:

=C2-D2

これで、入出庫履歴を更新するたびに、現在の在庫数が自動で反映されるようになりました。

Step 3. 発注点管理とアラート機能を追加する

在庫が一定数を下回ったら、発注が必要なことを知らせるアラート機能を追加しましょう。

1. 発注点をマスタから取得 まず、VLOOKUP関数を使い、「商品マスタ」で設定した発注点をF列に表示させます。

F2(発注点)セル:

=IF(A2<>"", VLOOKUP(A2, 商品マスタ!A:D, 4, FALSE), "")

2. 発注アラートを表示 G列に、IF関数を使って、現在庫数が発注点を下回っていたら「発注要」と表示させます。

G2(アラート)セル:

=IF(E2<=F2, "発注要", "")

3. 条件付き書式でセルを色付け さらに視覚的に分かりやすくするため、「発注要」と表示された行全体を赤く色付けします。 G列を選択し、「表示形式」>「条件付き書式」を開き、「カスタム数式」を選んで以下の数式を入力し、背景色を赤に設定します。

=$G1="発注要"

4.【自動化・効率化編】面倒な入力をなくし、管理を劇的にラクにする上級テクニック

基本的なシステムが完成したら、次に入力作業の効率化と、より高度な自動化に挑戦しましょう。

テクニック1:Googleフォームで入出庫をスマホから簡単入力

日々の入出庫作業は、PCを開かずにスマホから完結できるのが理想です。Googleフォームを使えば、誰でも簡単に使える入力専用画面を作成できます。

  1. スプレッドシートの「ツール」>「フォームを作成」から新しいフォームを作成します。
  2. 「商品名」「入庫数」「出庫数」などの質問項目を設定します。商品名は間違えがないよう、選択肢から選ぶ「プルダウン」形式にするのがおすすめです。
  3. フォームから回答を送信すると、自動的に連携されたシート(例:「フォームの回答 1」)に入力内容が記録されます。

この記録用シートを参照するように「入出庫履歴」シートの関数を修正すれば、スマホからフォーム入力するだけで在庫が自動更新される仕組みが完成します。

テクニック2:QUERY関数で高度なデータ集計・分析

SUMIFVLOOKUPよりも柔軟でパワフルなのがQUERY関数です。SQLというデータベース言語に似た構文で、スプレッドシートのデータを自由自在に抽出・集計できます。

例えば、別のシートに「先月の商品Aの出庫履歴だけを抽出したい」といった場合に非常に役立ちます。

使用例:

=QUERY(入出庫履歴!A:F, "SELECT * WHERE B = '商品A' AND A >= date '2025-06-01' AND A <= date '2025-06-30'")

この関数一つで、複雑な条件のデータ分析レポートが簡単に作成できます。

テクニック3:GASで完全自動化システムを構築【コピペ可】

Google Apps Script (GAS) は、スプレッドシートなどを操作できるプログラミング言語です。これを使えば、人間の操作なしにシステムを動かす「完全自動化」が実現できます。

シナリオ1:在庫が発注点を下回ったら担当者に自動でメール通知

「ツール」>「スクリプトエディタ」を開き、以下のコードを貼り付けて保存します。そして、「トリガー」設定でこの関数が毎日1回実行されるように設定します。

function checkStockAndSendEmail() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("在庫一覧");
  const data = sheet.getDataRange().getValues();
  
  const recipient = "担当者のメールアドレス"; // 送信先アドレス
  let alertMessage = "";

  // 1行目はヘッダーなので2行目からループ
  for (let i = 1; i < data.length; i++) {
    const currentStock = data[i][4]; // 現在庫数 (E列)
    const alertStatus = data[i][6]; // アラート (G列)
    
    // アラートが「発注要」の場合
    if (alertStatus === "発注要") {
      const productName = data[i][1]; // 商品名 (B列)
      alertMessage += `・${productName} (現在庫: ${currentStock})\n`;
    }
  }

  if (alertMessage) {
    const subject = "【在庫管理システム】発注が必要な商品があります";
    const body = "以下の商品の在庫が発注点を下回りました。\n\n" + alertMessage;
    MailApp.sendEmail(recipient, subject, body);
  }
}

これで、毎日自動で在庫をチェックし、発注が必要な商品があれば担当者にメールが飛ぶようになります。

5.【運用編】チームで使うためのルールと注意点

システムは作って終わりではありません。複数人で安定して運用するためのルール作りも重要です。

  • 入力ルールの徹底と入力規則の活用 「日付はyyyy/mm/dd形式で」「商品コードは半角英数で」といったルールを決め、スプレッドシートの「データの入力規則」機能で不正な値が入力できないように設定しましょう。
  • 「シートの保護」と「保護された範囲」で意図しない編集を防ぐ 関数が入力されているセルや、マスタデータなど、むやみに触ってほしくない範囲は保護をかけましょう。特定の人だけが編集できるように権限設定することも可能です。
  • 定期的な棚卸しの重要性 どんなに優れたシステムでも、入力漏れや現物の紛失などでデータと実際の在庫数(実在庫)にズレが生じます。月に1度など、定期的に実在庫を数える「棚卸し」を行い、データを修正する作業は必ず行いましょう。

6. 無料テンプレート配布|今すぐ使える在庫管理シート

「すぐに使い始めたい!」という方のために、本記事で解説した機能をすべて盛り込んだ、汎用的な在庫管理テンプレートをご用意しました。以下のリンクからコピーして、すぐにお使いいただけます。

▼【無料】高機能在庫管理テンプレート(準備中です)

テンプレートの使い方

  1. 上記リンクをクリックします。
  2. 表示された画面の右上にある「テンプレートを使用」ボタンをクリックします。
  3. あなたのGoogleドライブにテンプレートがコピーされ、編集できるようになります。

「商品マスタ」シートに自社の商品情報を入力するだけで、すぐに在庫管理をスタートできます。

まとめ:スプレッドシートで最適な在庫管理を実現し、ビジネスを加速させよう

本記事では、スプレッドシートを使った在庫管理システムの設計思想から具体的な作成手順、そしてGASによる自動化まで、網羅的に解説しました。

最後に、重要なポイントを振り返りましょう。

  • 成功の鍵は「設計」にあり。 いきなり作らず、目的と項目を明確にしましょう。
  • シートは「マスタ」「履歴」「一覧」の3つに分けるのが基本構造です。
  • VLOOKUPSUMIFなどの関数を使いこなし、計算を自動化しましょう。
  • GoogleフォームやGASを活用すれば、入力の手間をなくし、完全自動化も夢ではありません。
  • ルール作りと定期的な棚卸しで、システムの精度を保ちましょう。

スプレッドシートは、小〜中規模のビジネスにとって非常に強力な武器となります。まずは本記事のテンプレートから始めてみて、ぜひ自社の運用に合わせて自由にカスタマイズしてみてください。

そして、将来的にビジネスが拡大し、商品の種類や取引量が大幅に増えてスプレッドシートの限界を感じた際には、その時が本格的な「在庫管理システム」へステップアップするタイミングです。このスプレッドシートでの経験は、その際のシステム選びにも必ず役立つはずです。

あなたのビジネスが、最適な在庫管理によってさらに加速することを心から応援しています。