今回から数回にわたり、Excelには現在実装されていないGoogleスプレッドシート特有の関数について解説していきます。
薬局業務におけるデータ入力や集計作業で、行が増えるたびに数式をコピーする作業に手間を感じる場面も多いと思います。
Googleフォームから自動入力されるタイムスタンプから年月日だけを抽出したいときや、大量の在庫データの計算を一括で行いたいときに非常に便利なのがARRAYFORMULA関数です。
今回は、一度数式を入力するだけで、その後のコピー作業が一切不要になるARRAYFORMULA関数の具体的な使い方と、薬局の業務改善に役立つ活用例をご紹介します。
ARRAYFORMULA関数の基本的な使い方
生徒の点数で合否を考えます

D4セルに下記を入力します
=ARRAYFORMULA(IFS(C4:C=””,””,C4:C>=60,”合格”,C4:C<60,”不合格”))
通常D4セルのみに入力する場合
IFS(C4=””,””,C4>=60,”合格”,C4<60,”不合格”)
となりますが、C4ではなくC4:Cと範囲を指定しなくてはならないのがARRAYFORMULA関数の特徴です
具体的な活用例
Googleフォームのタイムスタンプから年月日を抽出する例
Googleフォームの回答結果(B列)にあるタイムスタンプから、年月日のみをA列に一括表示させる設定です。

A2セルに以下の数式を入力します。
=ArrayFormula(IF(B2:B<>"",INT(B2:B),""))
※表示形式を「表示形式 > 数字 > 日付」に設定してください。
使用期限の自動判定による在庫管理の効率化
医薬品の期限管理において、期限が迫っている品目を自動で判定します。C列に使用期限が入っている場合、D列に判定を表示させます。

=ARRAYFORMULA(IF(C2:C="", "", IF(C2:C<TODAY()+90, "期限間近", "OK")))
この数式をD2セルに入れるだけで、C列に新しい薬品が追加されるたびに、残り90日を切っているかを自動で判定し続けます。
処方箋受付件数や在庫消費の自動計算
調剤報酬の計算や在庫の総消費量を算出する際、個数と単位を掛け合わせる作業を一括化します。B列が数量、C列が規格や入数の場合の計算例です。

=ARRAYFORMULA(IF(B2:B="", "", B2:B * C2:C))
【ARRAYFORMULA】使用できないケースと注意点
行ごとに条件が変わる複雑な集計
特定の条件に一致する数値の合計を出す「SUMIFS関数」や、平均を出す「AVERAGEIFS関数」などは、ARRAYFORMULA関数と組み合わせて一括処理することができません。
これらの関数は範囲全体を一つの塊として処理しようとする性質があるため、行ごとの個別計算が正しく行われないからです。
計算結果が表示される範囲に別のデータが入力されている場合
ARRAYFORMULA関数は、数式を入力したセルから下の範囲へ自動的に計算結果を流し込みます。
もし、結果が表示されるはずのセルに手入力された数字や文字が一つでも残っていると、「#REF!(展開先が空ではありません)」というエラーが表示され、すべての計算が止まってしまいます。
行全体の論理演算
「AかつB」を判定するAND関数や、「AまたはB」を判定するOR関数は、ARRAYFORMULA関数の中では正しく機能しません。
代わりの方法として、掛け算(ANDの代わり)や足し算(ORの代わり)を用いた数式に置き換える工夫が必要になります。
まとめ
ARRAYFORMULA関数を活用することで、薬局内での「繰り返し発生するコピー作業」を完全に排除できます。
特にGoogleフォームと連携したデータ管理では、回答が追加されるたびに自動で計算が実行されるため、管理表のメンテナンスが劇的に楽になります。
SUMIFS関数が使えないなどの制限はありますが、仕組みを理解すればミスのない強力な業務改善ツールとなります。

コメント