お知らせ・ブログ一覧へ戻る

発注の記録を月別に集計する表は元のシートと分けて作る|元データはIMPORTRANGEでつなぎ、月ごとのシートは「対象月」のセル1つで切り替える作り方と、件数・数量の検算


発注の記録を月別に集計する表は元のシートと分けて作る|元データはIMPORTRANGEでつなぎ、月ごとのシートは「対象月」のセル1つで切り替える作り方と、件数・数量の検算

発注の記録を月別に集計する表は元のシートと分けて作る|元データはIMPORTRANGEでつなぎ、月ごとのシートは「対象月」のセル1つで切り替える作り方と、件数・数量の検算

店舗からの発注をフォームで受け、スプレッドシートに1行ずつ記録する仕組みを入れると、次に必ず出てくる要望があります。「今月、どの商品が何個出たのかを月ごとに見たい」という要望です。倉庫の出荷数の確認、仕入先への数量の照合、月末の請求の下準備など、月単位の数字が必要な場面は多くあります。

このとき、発注の記録が入っているシートにそのまま集計の列やフィルタを足したくなりますが、おすすめしません。先に結論を書きます。

  • 月別の集計表は、発注の記録とは別のスプレッドシートとして作る。 元の記録は「フォームが書き込む場所」として触らずに残す
  • 元データはIMPORTRANGEで丸ごとつなぐ。 集計側に手で写したりコピーしたりしない
  • 月ごとのシートは、上部の「対象月」のセル1つで絞り込む作りにする。 新しい月はシートを複製して日付を書き換えるだけで増やせる
  • 作ったら、ある1か月の件数・店舗数・合計数量・商品ごとの数量を、元の記録と突き合わせて一致を確かめる
  • 集計のセルは「警告のみ」の保護をかけ、見る人には閲覧だけで渡す

以下、20店舗以上から発注を受けている美容サロンFC本部で、倉庫担当が月ごとの数量を確認するための集計表を作ったときの構成と手順を紹介します。

なぜ発注の記録と同じファイルに集計を足さないのか

発注の記録は、フォームから送られた内容をプログラムが1行ずつ書き込む場所です。今回の本部では、店舗がスマホのフォームから発注すると、Googleのスクリプト(GAS)が「発注ログ」というシートに1明細1行で追記し、同時に仕入先ごとにメールを送る作りになっています。

この発注ログには、次の12列が並んでいます。

列 内容
A 発注番号
B 発注日時
C 店舗コード
D 店舗名
E 担当者名
F 商品コード
G 商品名
H 数量
I 単位
J 備考
K メール送信結果
L 仕入先

このシートに、月の合計を出す列を足したり、フィルタや並べ替えをかけたりすると、次のようなことが起こりえます。

  • 集計用に足した列や数式と、フォームから追記される行がぶつかり、書き込み位置がずれる
  • 誰かが並べ替えたまま保存し、発注番号の順番が崩れる
  • 倉庫担当に見せるために共有した結果、店舗マスタやメール設定など、見せる必要のないシートまで見えてしまう

発注の記録は「書き込む専用の場所」、月別集計は「読む専用の場所」と役割を分けておくと、どちらかを直すときにもう片方を気にせずに済みます。集計の見せ方を何度作り直しても、発注の受付は止まりません。

全体の構成:リンク1枚+月別12枚+サマリー1枚

別ファイルとして作った集計用のスプレッドシートは、次の14枚のシートで構成しました。

シート 役割
発注ログ(リンク) 元の発注ログをIMPORTRANGEでそのまま表示する。集計はすべてここを参照する
2026-09 〜 2027-08(12枚) 1か月分の集計。上段に件数、左に商品別の合計、右に明細
月別サマリー 商品×月の数量の一覧表(12か月分を横に並べる)

ポイントは、元データを参照するのは「発注ログ(リンク)」の1か所だけにしたことです。月別シートやサマリーがそれぞれIMPORTRANGEを持つと、元のファイルの場所が変わったときに直す箇所が13か所に増えます。1か所にまとめておけば、つなぎ直しは1つの数式で終わります。

手順1:元データをIMPORTRANGEでつなぐ

「発注ログ(リンク)」シートのA1に、次の数式を1つだけ入れます。

=IMPORTRANGE("元のスプレッドシートのURL","発注ログ!A1:L")

範囲は「A1:L」のように終わりの行を書かずに指定します。こうすると、発注が増えて行が伸びても、範囲を書き換える必要がありません。

初めてつなぐときは、セルに「アクセスを許可」のボタンが出るので1回押します。以降は、元の記録に発注が入ると、通常は数分で集計側にも反映されます。

なお今回は、14枚のシートと数式・書式を手で作らず、作成用のスクリプトで一括生成しました。月が増えたときに同じ作りを再現しやすくするためです。手で作る場合も、数式は以下と同じです。

手順2:月別シートの上段に「対象月」と件数を置く

各月のシートの2行目に「対象月」の欄を作り、B2にその月の1日の日付(例:2026/09/01)を入れます。このシートの数式はすべて、このB2のセル1つを基準に絞り込みます。

上段の3つの数字は次の数式です。

  • 発注件数(発注番号の重複を除いた数。1回の発注に複数の商品が入るため、行数ではなく番号で数える)

=IFERROR(ROWS(UNIQUE(FILTER('発注ログ(リンク)'!A2:A, '発注ログ(リンク)'!B2:B>=$B$2, '発注ログ(リンク)'!B2:B<EDATE($B$2,1)))),0)

  • 発注店舗数(店舗コードの重複を除いた数)

=IFERROR(ROWS(UNIQUE(FILTER('発注ログ(リンク)'!C2:C, '発注ログ(リンク)'!B2:B>=$B$2, '発注ログ(リンク)'!B2:B<EDATE($B$2,1)))),0)

  • 合計数量

=SUMIFS('発注ログ(リンク)'!H2:H, '発注ログ(リンク)'!B2:B,">="&$B$2, '発注ログ(リンク)'!B2:B,"<"&EDATE($B$2,1))

月の範囲は「対象月の1日以上、翌月1日(EDATE($B$2,1))未満」で指定しています。発注日時は時刻を含むため、「月末の日付以下」と書くと月末日の0時ちょうどまでしか含まれず、月末日の0時を過ぎた発注がすべて漏れます。 翌月1日未満で切るのが安全です。

発注が1件もない月は、FILTERが空になってエラーを返すので、IFERRORで0を表示させています。これがないと、まだ来ていない月のシートがエラー表示だらけになり、「壊れている」と誤解されます。

手順3:左に商品別の合計、右に明細を出す

5行目から下は、左右2つの表に分けています。

左=商品別の合計数量(倉庫チェック用)

QUERY関数で、仕入先・商品コード・商品名・単位ごとに数量を合計し、明細の数も添えます。範囲は見出し行を含むA1から指定し、QUERYの最後の引数で「見出しは1行」と伝えます。 A2から指定して見出し1行と伝えると、1件目の発注が見出しとして扱われ、集計から外れてしまうので注意してください。

=IFERROR(QUERY('発注ログ(リンク)'!A1:L,
 "select L, F, G, sum(H), I, count(A)
  where B >= date '"&TEXT($B$2,"yyyy-mm-dd")&"'
    and B < date '"&TEXT(EDATE($B$2,1),"yyyy-mm-dd")&"'
  group by L, F, G, I order by L, F
  label L '仕入先', F '商品コード', G '商品名', sum(H) '合計数量', I '単位', count(A) '明細数'",1),
 "この月の発注はまだありません")

先頭の列を「仕入先」にして並べているのがポイントです。今回の本部では、商品によって発注先が3つに分かれています。仕入先ごとに固まっていれば、倉庫や仕入先の担当者は自分の行だけを見れば済みます。

右=発注明細(日時順)

同じ範囲(A1:L・見出し1行)と同じ月の条件で、発注日時・発注番号・店舗名・担当者・仕入先・商品・数量・単位・備考を、日時順に並べます。合計の数字に疑問が出たとき、どの店のどの発注が効いているかをその場でたどれるようにするためです。

明細の日時列は、一覧で見やすいように「月/日」だけの表示形式にしています。時刻まで確認したいときは「発注ログ(リンク)」シートを見る、という役割分担です。

手順4:月別サマリーで12か月を横に並べる

「月別サマリー」は、行に商品、列に月を並べた一覧表です。

  • 行(商品)は、リンクシートから仕入先・商品コード・商品名の組み合わせを重複なしで取り出し、並べ替えて自動で並べる
  • 列(月)は、各列の見出しにその月の1日の日付を入れ、その日付を基準にSUMIFSで数量を合計する
  • 右端に12か月の合計列を置く

新商品が発注されると、行は自動で1行増えます。商品を手で追加する必要はありません。

新しい月の増やし方:シートを複製してB2を書き換えるだけ

月別シートは、すべてB2の対象月だけで絞り込む作りにしているため、13か月目以降は既存の月シートを複製し、シート名とB2の日付を書き換えるだけで増やせます。数式を1つも直す必要はありません(A1の「○年○月」という見出しを文字で入れている場合は、そこも合わせて直します)。

月ごとにシートを分けるか、1枚のシートで対象月を切り替えるかは迷うところですが、今回は月ごとに分けています。こうしておくと、倉庫担当が「先月の数字」と「今月の数字」をタブを切り替えるだけで見比べられ、1枚のシートの対象月を誰かが書き換えたまま保存する事故も起きません。

作ったら必ずやる検算:1か月分を元の記録と突き合わせる

集計表は、見た目が整っていても数字が合っている保証にはなりません。月の境目の扱い、重複の数え方、商品名の表記ゆれなど、ずれる原因はいくつもあります。公開前に、実データが入っている1か月分で、元の記録との一致を確かめます。

今回は2026年9月分で、次の4点を突き合わせました。

確認項目 集計表 元の発注ログ
発注件数(発注番号の数) 47件 47件
発注店舗数 21店 21店
明細の行数 113行 113行
合計数量 4,954 4,954

加えて、商品別の合計(この月は23品)を1品ずつ元データの合計と比べ、すべて一致することを確かめました。発注がまだ入っていない月のシートでは、件数・数量が0、表には「この月の発注はまだありません」と表示されることも確認しています。

検算で見るべきなのは「合計数量」だけではありません。合計が合っていても、ある商品が別の商品に数えられていれば、倉庫の出荷数とは合いません。件数・店舗数・明細数・合計・商品別の5段階で突き合わせると、どこでずれているかの切り分けもしやすくなります。

見る人への渡し方:閲覧共有と「警告のみ」の保護

集計表は、倉庫担当など発注を受ける側の人に見てもらうためのものです。渡し方で気をつけたい点は2つです。

  • 見る人には閲覧者として共有する。 集計表は数式が下へ広がって表示される作りなので、表示範囲のセルに誰かが文字を入力すると、その表全体がエラーになります。編集できない状態で渡すのが確実です
  • 集計のセルには「警告のみ」の保護をかける。 編集権限を持つ本部側の人がうっかり触ろうとしたときに、確認のメッセージが出るようにしておきます。完全に締めると本部側の修正まで手間になるため、警告にとどめています

また、前述の作成用スクリプトは、何度実行しても同じ結果になるように作っておきました。サマリーの月の列を増やしたいときは、スクリプトの対象月の一覧を伸ばして実行し直すだけで、既存の月シートが二重にできることはありません。

応用:同じ作りが使える場面

「元の記録は書き込み専用で触らない」「集計は別ファイルでIMPORTRANGEから読む」「対象月のセル1つで絞り込む」という作りは、発注以外にも使えます。

  • 予約や来店の記録を、月ごと・店舗ごとに数える表
  • 問い合わせフォームの回答を、月ごとの件数と内容別に分ける表
  • 消耗品の使用記録を、月ごとに仕入先別でまとめて請求の下準備に使う表

どれも、記録を受ける仕組み(フォームやスクリプト)を止めずに、見せ方だけを何度でも作り直せるのが利点です。

まとめ

  • 発注の記録は「書き込む専用」、月別集計は「読む専用」として別のスプレッドシートに分ける
  • 元データとのつなぎはIMPORTRANGE 1か所にまとめ、月シートやサマリーはそのリンクシートを参照する
  • 月シートはB2の対象月だけで絞り込み、月の範囲は「1日以上・翌月1日未満」で切る。新しい月は複製してB2を書き換えるだけ
  • 商品別の合計は仕入先を先頭の列にして、見る人が自分の行だけ確認できるようにする
  • 公開前に、実データのある1か月で件数・店舗数・明細数・合計・商品別を元の記録と突き合わせる(今回は47件・21店・113明細・合計4,954・23品すべて一致)
  • 見る人には閲覧者として共有し、集計セルには警告のみの保護をかける

発注の仕組みを入れたあとに「月の数字が欲しい」と言われたら、元のシートに手を入れる前に、まず別ファイルで読むための表を作ることから始めてみてください。

関連記事

2026.10.04

多店舗の店舗一覧ページは地図とテキストの一覧を両方置く|県→エリア→ピンで選ばせる地図と、HTMLに最初から書いた店舗カードの作り方、公開前に電話・営業時間・予約先を突き合わせる手順

2026.10.03

実績の画面をSNSに載せるときの匿名化|市名だけ伏せても駅名・地名で店は分かる。店名は丸ごと置き換え、文字認識で実名の残りを機械的に照合する手順

2026.10.03

Macの常駐処理が登録されたまま止まり続けるとき|書類フォルダのiCloud同期でファイルが中身なしになる原因と、置き場所を変える直し方


お知らせ・ブログ一覧へ戻る