薬局や病院の現場において、医薬品の在庫管理を紙の台帳やPC上のファイルのみで行うと、入力を忘れたり、最新の在庫数を確認するためにわざわざPCを立ち上げたりする手間が発生します。
本記事では、Googleフォームで入出庫を入力した直後、完了画面からワンタップで最新の在庫集計シートへアクセスできる仕組み作りを検討、解説します。
この仕組みを導入することで、スマートフォン一台で入力から在庫確認までを完結させることが可能になり、現場の業務効率は大幅な向上が期待できます。
作成する前の注意点
薬局での運用を前提として作成していますが、麻薬、毒薬などデータ管理が厳しい部分への使用は法律、各保健所からの指示内容を厳守して運用の検討を行ってください。
私見ですが、麻薬に対しての運用はセキュリティ上許可が出ない可能性が非常に高いです。
Googleフォームを使うメリット・デメリット
メリット
・アンケート形式のため操作性が良い
・回答時の条件設定で入力ミスが軽減できる
・Googleフォーム、スプレッドシートを使用するためリアルタイム更新やデバイス問わず使用できる
Excelに比べてどこでもいつでも入力できる点と保存の手間が無く、入力ミスの軽減はとても大きなメリットです
デメリット
・品目が変わった時にフォームの回答欄、スプレッドシートの集計項目など変更点が増える可能性がある
・1品目ごとに回答欄の作成が必須のため品目が数十以上あると初期設定に時間がかかる
薬局内の全品目をこのシステムで対応しようとすると準備段階で膨大な時間がかかってしまうのでオススメはできません。
フォームを作成する
今回はアンカロンを例に作成します。
Googleフォームは下記のリンクから行けます
画像が完成の状態になります

質問形式は「記述式(短文)」にします。

質問ごとに点のボタンから回答の検証を選択し、正規表現を選択することで様々な条件を指定することができます。
今回は在庫数を入力して欲しいですが、全角と半角数字や誤って数字以外を入力した場合に次に進まない様に「一致する」を選択し、下記の条件を入力します。
エラーメッセージは分かりやすい文言を入力してください。
[0-9]+
半角数字0~9を入力(桁数は自由)
1項目あたりの設定はこれで完了です。
フォームの完了画面に確認用URLを設置する
Googleフォームの送信完了時に表示されるメッセージは、自由にカスタマイズできます。
なぜこのようにするのかというとフォームはアンケート機能がメインになるため現在庫数と同期して表示するなどの機能を簡単には導入できないからです。(GASを使えば可能かもしれません)
今回はフォームの回答内容を集計しているスプレッドシートに閲覧用の集計結果のスプレッドシートを作成し、そのシートへ回答後にすぐ閲覧できる設定にします。
まずはURLの取得を行います。

フォームの回答欄にスプレッドシートで表示ボタンがあるためこちらを押します。
初回の場合新たにスプレッドシートが作成されます。今回はブック名を「管理簿」という名前にします。
スプレッドシートが作成されたら集計結果シートを作成し、スプレッドシートを共有にします。

集計結果のURLはリンクのコピーを行わず、集計結果を開いた状態のURLをコピーします。
フォームに戻り、設定→表示設定→確認メッセージにURLをペーストしたら完成です。

これにより、ユーザーは送信ボタンを押した直後に、最新の在庫一覧へ迷わず遷移できます。
データの反映に数秒のタイムラグが生じることがあるため、メッセージ内に「数値が古い場合はブラウザを再読み込みしてください」といった注釈を添えておくことが、スムーズな運用のポイントです。
スプレッドシートで集計結果シートの設計
集計結果には商品名、当日の総入庫数、総出庫数と当日の在庫の出入りも加味した後の現在庫数の4項目で作成します。
集計結果をスマートフォンでも見やすくするためには4項目ぐらいが上限な印象です。

このようにフォームでどこまでも入力しても自動計算されるように設定していきましょう。
フォームのタイムスタンプから年月日のみを抽出する
フォームで回答すると回答日時であるタイムスタンプが自動入力されてとても便利なのですが、デメリットとしては日付計算を行ったときに時間が邪魔をしてエラーが起きる可能性が非常に高いです。
今回はA列を新たに挿入し、タイムスタンプから年月日を抽出する列を作成します。

=ArrayFormula(IF(B2:B<>””,INT(B2:B),””))
画像ではよく分からない数字ですが、Excel、スプレッドシートでは日付をシリアル値で識別しています。
そのため46024のセルを選択して表示形式を日付にすると2026/01/02へしっかり変換されます。
集計結果の表に数値を反映する
商品名を入力した一覧を作成します

入庫数、出庫数は当日の出入りの数値が算出されるようにします。
入庫数
=SUMIFS(‘フォームの回答 1’!C:C,‘フォームの回答 1’!$A:$A,TODAY())
出庫数
=SUMIFS(‘フォームの回答 1’!D:D,‘フォームの回答 1’!$A:$A,TODAY())
数あるアンケートのうち、当日入出庫のアンケート結果がある列を抽出して足しています。
理論在庫を算出する

=SUMIFS(‘フォームの回答 1′!C:C,’フォームの回答 1’!A:A, “<“&TODAY()+1)–SUMIFS(‘フォームの回答 1′!D:D,’フォームの回答 1’!A:A,”<“&TODAY()+1)
次の日未満(<TODAY()+1)までの入庫数から次の日未満(<TODAY()+1)までの出庫数を引いた数値が現在庫数になる計算になります。
運用開始時は現在庫を最初に回答しないといけない点に注意です。
月間集計シートによる事務作業の効率化
月末の報告用として、別シートに月間集計を作成します。
ここでも TODAY()関数を活用し、現在の日付から自動的に「今月の範囲」を算出します。
スプレッドシートを開いた瞬間にその時点での月間合計が算出されているため、締め作業の時間を大幅に短縮できます。

現在庫数の関数は変えていませんが入庫、出庫の関数を月初~当日までの集計結果として算出しています。
入庫数
=SUMIFS(‘フォームの回答 1’!C:C, ‘フォームの回答 1’!$A:$A, “>=”&(EOMONTH(TODAY(),-1)+1), ‘フォームの回答 1’!$A:$A, “<“&TODAY()+1)
出庫数
=SUMIFS(‘フォームの回答 1’!D:D, ‘フォームの回答 1’!$A:$A, “>=”&(EOMONTH(TODAY(),-1)+1), ‘フォームの回答 1’!$A:$A, “<“&TODAY()+1)
この関数のメリットとしてはスプレッドシートを開いたときに設定等を必要としないですぐ見れるという点ですが、デメリットとしては〇月の分が見たいができない点ですが今回は迅速性と入力によるミスを防ぐためこのような形にしています。
誤操作を防ぐためのシート保護設定
運用の安全性を高めるため、データが蓄積される回答シートには保護をかけ、管理者以外は編集できないように設定します。

シート名の部分を右クリックすると「シートを保護」がありますのでここから保護を行います。
まとめ
Googleフォームとスプレッドシートを連携させ、日付関数や修正フラグを活用することで、現場の負担を最小限に抑えた在庫管理システムが構築できます。
入力から確認、そして月次集計までを自動化することで、転記ミスがなくなり、薬剤師が本来の業務に集中できる時間を生み出すことができます。



コメント