在庫の数が、システムと現物で合わない。棚卸しのたびに差異が出て、原因を探すうちに時間が過ぎる。そして次の棚卸しでも、また同じくらいの差異が出る。
この状態を、棚卸しの精度を上げることで解決しようとすると、たいてい行き詰まります。差異が生まれているのは棚卸しの瞬間ではなく、日々の出し入れの記録だからです。この記事では、差異の原因を種類別に分けて記録する仕組みと、棚卸しを年1回の大仕事から日々の点検に変える設計を説明します。
この記事でわかること
- 在庫差異が棚卸しではなく日々の記録で生まれている構造と、原因の5分類
- 現場の入力を最小にして記録を続けさせる設計。棚卸しを日々の点検に変える循環棚卸しの回し方
- 差異を責めない前提の作り方と、記録の残し方についての注意
ムダの現状:差異の原因が分からないまま調整している
棚卸しの作業を分解すると、時間の使われ方がはっきりします。
数える作業そのものは、人数をかければ終わります。時間を食うのは、その後です。システムの数と現物の数が合わない品目を洗い出し、伝票を遡り、担当者に聞き、それでも分からなければ「棚卸調整」として数を合わせる。この調整で終わらせた品目は、次回も同じように差異を出します。
差異の原因は、5つに分かれる
原因を分けずに扱っている限り、対策が打てません。実際に起きる差異は、次の5種類です。
| 原因 | 起きる場面 | 対策の方向 |
|---|---|---|
| 記録の漏れ | 急ぎで出して、後で入れ忘れる | 入力を軽くする |
| 記録の誤り | 品番違い、桁の間違い | 選択式にする |
| タイミングのずれ | 出荷済みだが計上は翌日 | 締めの時刻を決める |
| 物理的な減耗 | 破損、劣化、こぼれ | 記録する場を作る |
| 置き場所の問題 | 別の棚にあって数え漏れ | 置き場所を固定する |
この5つは、対策がまったく違います。記録の漏れに対して棚卸しの回数を増やしても、何も解決しません。差異が出るたびに原因を分類して記録することが、対策の出発点になります。
機械に渡せる部分と、人に残す部分
| 工程 | 中身 | 誰がやるか |
|---|---|---|
| 出し入れの記録 | 品番と数量を残す | 人。ただし10秒以内 |
| 理論在庫の計算 | 入出庫を積み上げる | 機械 |
| 数える対象の選定 | 今週どの品目を数えるか | 機械 |
| 現物を数える | 実際の数を確認する | 人 |
| 差異の原因の判定 | 5種類のどれかを選ぶ | 人。選ぶだけ |
3番目の「数える対象の選定」を機械に渡すのが、この記事の中心です。全品目を年1回数えるのをやめ、動きの多い品目を毎週数える形に変えます。
スキームの全体図:入力を減らし、差異に理由をつける
必要なツールと費用(2026年9月23日時点)
| 必要なもの | 用途 | 費用の考え方 |
|---|---|---|
| 入力フォーム | 出し入れの記録 | 既存の契約の範囲 |
| スプレッドシート | 理論在庫と差異の記録 | 追加費用なし |
| Apps Script | 在庫の計算と対象の選定 | 追加費用なし |
| 現場の端末 | 入力と数えるときの確認 | 置き場所ごとに共用で1台 |
在庫管理の専用システムを検討する前に、この4つで3か月回してみてください。差異の原因が5分類のどこに集中しているかが分かると、どんなシステムが必要かも決まります。先にシステムを入れると、この判断材料が得られません。
導入手順:動きの多い品目から始める
Step 1:品目を、動きの多さで3段階に分ける
全品目を同じように扱わないでください。棚卸しの頻度を変えるために、まず分類します。
過去6か月の出庫の記録を集め、品目ごとに出庫の回数を数えます。回数の多い順に並べ、累計で全体の7割に届くところまでをA、次の2割をB、残りをCとします。金額ではなく出庫の回数で分けるのが要点です。動きが多いほど、記録の機会が多く、差異も生まれやすいからです。
| 区分 | 性質 | 数える頻度 |
|---|---|---|
| A | 出庫回数が多い。差異が出やすい | 毎月 |
| B | 中程度 | 3か月に1回 |
| C | ほとんど動かない | 年1回 |
Cの中に、1年以上まったく動いていない品目が見つかることがあります。これは棚卸しの話とは別に、持ち続けるかどうかを判断する対象です。数えるたびに時間を使っている在庫が、実は何年も使われていない、ということが起きます。
置き場所を固定すると、原因が1つ減る
分類する作業と同時に、置き場所の見直しもしておいてください。5つの原因のうち「置き場所の問題」は、定位置を決めるだけで消せます。
やることは単純です。Aに分類した品目について、置き場所を1か所に固定し、表示を付ける。Aだけで構いません。全品目の定位置を決めようとすると、それ自体が数か月の作業になります。
そして、置き場所を品目の表に列として持ってください。数えるときに探す時間がなくなり、1回15分という目標が現実的になります。置き場所が分からない品目を探す時間が、循環棚卸しでは毎回の負担になります。
Step 2:出し入れの入力を、10秒に収める
記録の漏れは、入力が重いことから生まれます。急いでいるときに30秒かかる入力は、後でやろうと思われて、そのまま忘れられます。
目標は10秒です。そのために、入力させるのは2つだけにします。品番と数量。日時、入力者、置き場所は自動で入るようにしてください。
品番は手入力させないでください。よく出る品目を並べたボタンか、読み取りで入れます。品番の手入力は、記録の誤りの最大の原因です。桁の打ち間違い、似た品番の取り違え。選択式にすれば、この種類の差異はほぼ消えます。
Step 3:理論在庫と、今週の対象を計算する
次のApps Scriptは、入出庫の記録から理論在庫を計算し、今週数えるべき品目を出します。
var CYCLE = { 'A': 30, 'B': 90, 'C': 365 };
var WEEKLY_LIMIT = 15;
function buildCountList() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var stock = calcStock(ss);
var items = ss.getSheetByName('品目').getDataRange().getValues().slice(1);
var today = new Date();
var due = [];
for (var i = 0; i < items.length; i++) {
var code = items[i][0], name = items[i][1], rank = items[i][2];
var last = items[i][3];
var span = CYCLE[rank];
if (!span) continue;
var days = last ? Math.floor((today - new Date(last)) / 86400000) : 9999;
if (days < span) continue;
due.push({ code: code, name: name, rank: rank, days: days,
theory: stock[code] || 0 });
}
due.sort(function (a, b) { return (b.days - CYCLE[b.rank]) - (a.days - CYCLE[a.rank]); });
var out = [];
for (var j = 0; j < due.length; j++) {
if (j >= WEEKLY_LIMIT) break;
out.push([due[j].code, due[j].name, due[j].rank, due[j].theory, '', '', '']);
}
write(ss, out);
}
function calcStock(ss) {
var m = {};
var v = ss.getSheetByName('入出庫').getDataRange().getValues().slice(1);
for (var i = 0; i < v.length; i++) {
var code = v[i][1];
var qty = Number(v[i][2] || 0);
var kind = v[i][3];
if (!code) continue;
if (!m[code]) m[code] = 0;
if (kind === '入庫') m[code] += qty;
if (kind === '出庫') m[code] -= qty;
if (kind === '調整') m[code] = qty;
}
return m;
}
function write(ss, out) {
var sh = ss.getSheetByName('今週数える');
sh.getRange(2, 1, Math.max(sh.getLastRow() - 1, 1), 7).clearContent();
if (out.length === 0) return;
sh.getRange(2, 1, out.length, 7).setValues(out);
}
実装で押さえている点を3つ挙げます。
1つ目、1回あたりの件数に上限を設けていること。上のコードでは15件です。1回15分で終わる量にしないと、毎週の作業として続きません。件数は自社の品目の数え方に合わせて調整してください。
2つ目、期限を超えた日数が大きいものから並べていること。単に期限を過ぎたものを順に出すと、いつまでも後回しになる品目が生まれます。
3つ目、出力する列に理論在庫を含めていること。数える人に理論値を見せるかどうかは判断が分かれますが、見せない運用のほうが差異を正しく拾えます。その場合は、この列を隠した状態で現場に渡してください。
Step 4:差異には、必ず理由をつける
数えた結果が理論在庫と違ったとき、調整して終わりにしないでください。5分類のどれかを選ぶ欄を必ず埋めます。
選ぶだけにするのが要点です。文章を書かせると記録されません。記録漏れ、記録誤り、タイミングのずれ、減耗、置き場所。この5つから選び、必要なら一言だけ添える形にします。
分からない場合は「原因不明」を選べるようにしてください。選択肢に「分からない」がないと、適当にどれかを選ばれます。それでは分類の意味がなくなります。原因不明が多いこと自体が、次の打ち手を示す情報になります。
締めの時刻を決めると、タイミングのずれが消える
5つの原因のうち「タイミングのずれ」は、締めの時刻を決めるだけで大きく減ります。
出荷は済んでいるが記録は翌朝、という運用だと、その日の夕方に数えた在庫は必ず合いません。何時までの出し入れをその日の分として扱うかを決めてください。17時、あるいは業務終了時。決めたら、数えるのはその時刻の後にします。
そして、数えた時刻も記録に残してください。差異が出たときに、締めの時刻をまたいでいなかったかを確認できます。この列がないと、タイミングのずれと記録漏れの区別がつきません。
Step 5:月に1回、原因の分布を見る
集まった分類を、月に1回集計してください。どの原因が多いかで、打つべき手が変わります。
記録漏れが多いなら、入力の手間を見直します。記録誤りが多いなら、品番の入れ方を選択式に変えます。タイミングのずれが多いなら、締めの時刻を決めます。減耗が多いなら、保管の方法か扱い方の問題です。置き場所が多いなら、定位置を決めます。
そして、原因不明の比率が下がっていくかを見てください。下がっていれば、現場が差異の原因に目を向けるようになっています。
最初の1か月は、A区分だけで回す
全区分を同時に始めないでください。仕組みが動くかどうかを確かめる期間が要ります。
最初の1か月は、A区分の品目だけで回します。入力が10秒で終わるか、毎週15分の棚卸しが続くか、差異の分類が選ばれるか。この3つが確認できてから、BとCを足します。
1か月やってみると、たいてい調整が必要な箇所が見つかります。よく出る品目がボタンの2画面目にあって選びにくい、置き場所の表示が現場の呼び方と違う、といった細かい問題です。これらはA区分だけの期間に直しておくほうが、全体に広げてから直すより手間がかかりません。
現場の合意の取り方:差異を責めない前提を作る
この仕組みの成否は、差異が正直に記録されるかどうかで決まります。
| 懸念 | 背景 | 答え方 |
|---|---|---|
| 差異を出すと怒られる | これまで差異が責められてきた | 差異の件数を個人別に出さないと決め、実際に出さない |
| 数える回数が増える | 毎週と聞いて負担を想像する | 1回15分、年間の合計は年1回の全数より少ないと示す |
| 記録が面倒 | 過去の入力が重かった | 実際に10秒で終わることを、その場で試してもらう |
年間の合計時間を、先に計算して見せる
毎週数えると聞くと、負担が増えるように感じます。実際には減ることが多いので、計算して見せてください。
年1回の全数棚卸しは、数える時間だけでなく、事前の準備、当日の人員の確保、そして差異の調査に時間がかかります。一方、循環棚卸しは1回15分を年間50回で、合計12時間半。準備も人員の確保も不要です。
この比較を数字で示すと、話が進みます。感覚で「増える」と思われている限り、協力は得られません。
差異の件数を、個人別に出さない
差異が個人の責任として扱われると、記録されなくなります。数が合わないと分かった時点で、こっそり調整されるようになる。
集計の軸を、品目別・置き場所別・原因別の3つに限ってください。担当者別の集計は作らない。口頭の約束ではなく、集計を作らない設計にすることで担保します。
そして、差異が出たときの扱いを先に明示してください。差異は原因を知るための情報であり、評価には使わない。この一文を、仕組みを始める説明で必ず伝えます。
失敗パターンと限界:棚卸資産の評価と記録
循環棚卸しと、決算のための棚卸しは別の話
循環棚卸しは、日々の在庫の精度を上げるための仕組みです。決算において棚卸資産をどう評価し、どのような手続きで数量を確定するかは、これとは別に考える必要があります。
自社の会計処理として循環棚卸しの結果をどう扱えるかは、顧問税理士や会計士に確認してください。この記事の仕組みは、日々の在庫を合わせるための実務であり、会計上の取扱いを示すものではありません。
調整の記録を、消さない
差異が出て在庫数を調整したとき、その記録を残してください。いつ、どの品目を、いくつ、どの原因で調整したか。
調整は、在庫の金額に影響します。後から「なぜこの数になっているのか」を説明できる状態にしておくことが必要です。上のコードでは、調整も入出庫と同じ表に記録する形にしています。在庫表の数字を直接書き換える設計にしないでください。履歴が残らなくなります。
この仕組みが向かない場合
品目が数十点しかなく、置き場所も1か所という規模では、循環棚卸しの効果は限定的です。この場合は、入力を軽くする部分だけを作り、棚卸しは従来どおりでも足ります。
逆に、ロットや消費期限の管理が必要な品目を扱っている場合は、この仕組みだけでは足りません。数量だけでなく、どのロットがいくつあるかを追う必要があるためです。まず数量の精度を上げてから、ロットの管理を足す順番を勧めます。
また、複数の拠点にまたがる在庫では、拠点間の移動という新しい原因が加わります。移動中の在庫をどちらの拠点で数えるかを先に決めておかないと、差異の原因が増えます。
AIを足すなら、発注の予測ではなく異常の検出に
在庫にAIを使うというと、需要予測や自動発注が思い浮かびます。ただ、その前に効く使い方があります。
入出庫の記録から、いつもと違う動きを検出する使い方です。普段は週に数回しか動かない品目が1日に何度も出ている、出庫の数量が過去の平均から大きく外れている。こうした異常は、記録の誤りか、実際に何かが起きているかのどちらかです。
需要予測は、記録の精度が上がってからの話です。差異が毎月出ている状態のデータで予測しても、その予測は差異を含んだものになります。順番は、記録を直す、異常を拾う、そして予測する。この順を飛ばすと、当たらない予測に振り回されます。
効果の測り方
| 数字 | 測り方 | いつ見るか |
|---|---|---|
| 差異が出た品目の割合 | 数えた品目のうち差異があった数 | 毎月 |
| 原因不明の比率 | 差異のうち原因不明を選んだ数 | 毎月 |
| 棚卸しにかけた時間 | 年間の合計時間 | 年1回 |
1つ目は、最初の数か月は下がりません。これまで年1回しか見ていなかった差異が、毎月見えるようになるだけだからです。3か月目以降、記録の漏れや誤りへの対策が効いてくると下がり始めます。
2つ目のほうが、早く動きます。原因不明の比率は、現場が差異の原因を考える習慣がつくにつれて下がります。ここが半年たっても高いままなら、分類の選択肢が実態と合っていない可能性があります。
まとめ
在庫差異は、棚卸しの瞬間ではなく日々の出し入れの記録で生まれています。だから、棚卸しの精度を上げても解決しません。
やることは2つです。1つは、出し入れの入力を10秒に収めること。入力させるのは品番と数量だけにし、品番は選択式か読み取りにする。記録漏れと記録誤りの大半は、ここで消えます。もう1つは、差異が出たときに必ず原因を5分類から選ばせること。調整して終わりにしない。
そして、棚卸しを年1回の全数から循環棚卸しに変えます。出庫の回数で品目をA・B・Cに分け、Aは毎月、Bは3か月、Cは年1回。1回あたり15分で終わる件数に上限を設ける。年間の合計時間は、全数棚卸しより少なくなります。
合意は、差異を個人の責任にしない前提を作ることで取ります。集計の軸を品目別・置き場所別・原因別に限り、担当者別は作らない。設計としてそうしておくことで、正直な記録が続きます。
よくある質問
ABCの分類は、金額で分けるのが一般的ではないですか
金額で分ける考え方もありますが、差異を減らすことが目的なら出庫の回数で分けてください。差異は記録の機会に比例して生まれるため、動きが多い品目ほど数える頻度を上げる必要があります。金額での分類は、在庫の金額を管理する別の目的に向いています。
数える人に理論在庫を見せるべきですか
見せない運用のほうが、差異を正しく拾えます。理論値が見えていると、それに近い数を報告してしまう傾向があるためです。ただし、明らかに桁が違う場合に気づけないという面もあります。見せない設定で始めて、数え間違いが多いようなら見直してください。
差異が出ても、調整すれば数は合います。原因を記録する意味はありますか
調整だけで終わらせると、次回も同じ差異が出ます。原因を分類して積み上げると、どこに手を打てばよいかが見えます。記録漏れが多いのか、置き場所の問題なのか。対策がまったく違うので、分けずに扱っている限り減りません。
1回15分という上限は、どう決めればよいですか
実際に数えてみて決めてください。品目によって数えやすさが違います。まず10件で試して所要時間を測り、15分に収まる件数に調整します。重要なのは、毎週の作業として無理なく続く量にすることです。長くすると、忙しい週に飛ばされます。
1年以上動いていない品目が見つかりました
棚卸しとは別の判断が必要な対象です。なぜ動いていないのか、今後使う見込みがあるのか、保管の場所を占めていないか。持ち続けるかどうかの判断は、在庫の金額や税務上の取扱いにも関わるため、必要に応じて顧問税理士に相談してください。
複数の倉庫がある場合は、どうすればよいですか
拠点間の移動という原因が加わるため、移動中の在庫をどちらの拠点で数えるかを先に決めてください。決めないまま始めると、差異の原因に「移動中だった」が大量に混ざり、他の原因が見えなくなります。まず1拠点で回してから広げる順番を勧めます。
同じ部門の記事
現場シフト作成を自動化する|条件を法令・店舗・配慮の3層に分け、配慮の調整だけを人が決める2026年10月1日
現場製造現場の紙の記録を電子化する|日報・点検・不良の3つから始め、入力は選択式と写真で30秒に収める2026年9月25日