Claude Media
Claude for Excelで薬局の不動在庫を返品候補に洗い出す手順

Claude for Excelで薬局の不動在庫を返品候補に洗い出す手順

在庫台帳と払出実績から動かない医薬品を拾い、返品を慎む区分を先に外して、卸へ相談する候補だけを残すExcelの手順です。Claude for Excelに任せる範囲と人が決める範囲も分けて示します。

薬局の不動在庫は、払出実績から最終払出日と月あたりの使用量を出し、在庫月数と使用期限を並べると洗い出せます。ここまではClaude for Excelに任せられる作業です。ただし、洗い出した品目をすべて卸に返せるわけではありません。流通改善ガイドラインは、開封品や期限切れ品などの返品を、卸と薬局の双方が慎むよう求めています。

この記事では、在庫台帳に判定列を足して「返品を慎む区分」を先に外し、卸へ相談できる候補だけを購入元の卸ごとに並べるところまでを順に示します。返品を受けるかどうかは卸との契約と取引条件で決まるため、最後の判断は薬剤師と卸の担当者が行います。

洗い出した不動在庫が、そのまま返品候補にはならない理由

厚生労働省の流通改善ガイドラインは、返品について2つのことを書いています。不動在庫と廃棄コストの増加が経営に響くこと。そして、次の7つに当たる医薬品の返品は、卸と保険薬局の双方が互いに慎むことです。令和8年3月4日の改訂版にも、この7項目が載っています。

返品を慎む区分在庫台帳で拾う列
① 厳格な温度管理を要する医薬品在庫台帳で拾う列保管条件
② 有効期限を経過した医薬品在庫台帳で拾う列使用期限
③ 開封された医薬品在庫台帳で拾う列開封状況
④ 汚損、破損した医薬品在庫台帳で拾う列状態
⑤ 契約で「返品不能」と指定された医薬品在庫台帳で拾う列返品不能契約
⑥ 価値や安全性が損なわれているおそれが合理的に認められる医薬品在庫台帳で拾う列人が目で見て判断
⑦ 在庫調整を目的とした医薬品在庫台帳で拾う列返品理由(人が確認)

⑦の例として、文書の脚注は「月末に返品して、翌月に買い戻す行為」を挙げています。また脚注には、温度管理を要する医薬品、期限切れ、開封品、汚損・破損品の返品が、卸売業の公正競争規約の運用基準でも制限されていると書かれています。返品されても卸が再販売できず、廃棄が前提になる医薬品があるという想定です。

ここから、シートの作り方が決まります。不動かどうかを見る列と、返品を慎む区分かどうかを見る列を分けておくのです。不動と判定された品目のうち、①〜⑤に当たらないものだけが「卸に相談してよい候補」になります。

Claude for Excelに任せる範囲

この作業は、次のように分担します。

作業任せ先理由
払出実績の集計、最終払出日、月平均の算出任せ先Claude for Excel理由MAXIFSとSUMIFSの組み立て
在庫月数と期限までの月数の比較任せ先Claude for Excel理由列同士の計算
区分の判定列、卸別のリスト化任せ先Claude for Excel理由IFS式とフィルター
開封・汚損・温度管理の実物の状態任せ先薬剤師・事務員理由棚を見ないと分からない
返品を受けてもらえるかの確認任せ先薬剤師と卸の担当者理由契約と卸の返品条件で決まる
採用薬から外すかどうか任せ先薬剤師理由処方元の動向を踏まえた判断

Claude for Excelは、ブックへの質問にセル単位の根拠を付けて答え、数式の関係を保ったまま値を更新し、並べ替え・フィルター・ピボットテーブルの編集もできます。一方、公式の制限事項は、検証なしの監査上重要な計算や、規制対象の機微なデータを統制なしで扱う用途を推奨していません。

使うのは在庫と払出の集計だけで、患者名や処方内容は入れません。調剤録そのものではなく、薬品コードごとの日次の払出数量を出力して使います。

前提 — 使える環境とブックの用意

Claude for Excelは、Pro・Max・Team・Enterpriseの各プランで使えます。Excel 2016・2019の永続ライセンス版、iPad、Androidでは動きません。データテーブルとマクロ・VBAの操作にも対応していないため、返品リストは式とフィルターで作ります。

入力データはレセコンや在庫管理システムから出力したものを使います。取引先から受け取ったファイルには隠れた指示文が入っている危険があると警告されているため、自局で出力したファイルに限ります。作業は元のブックの複製で始めてください。

「在庫」シートの列

行は薬品コードではなくロット単位にします。同じ薬でも期限が違えば、返品できるかどうかが変わるためです。

列項目入れる値
A項目薬品コード入れる値院内の管理コード
B項目一般名コード入れる値成分・規格が同じなら同じ値
C項目薬品名入れる値
D項目ロット入れる値
E項目使用期限入れる値日付
F項目現在庫数入れる値錠・包など管理単位をそろえる
G項目薬価入れる値1単位あたり
H項目保管条件入れる値常温 / 冷所
I項目開封状況入れる値未開封 / 開封済
J項目状態入れる値良好 / 汚損 / 破損
K項目返品不能契約入れる値有 / 無
L項目購入元卸入れる値

M列以降は手順で足す判定用の列です。

「払出」シートと「設定」シート

「払出」シートはA列に払出日、B列に薬品コード、C列に数量、D列に一般名コードを入れます。D列はClaudeにXLOOKUPで補ってもらえます。

「設定」シートには3つのセルを置きます。B1が基準日、B2が不動とみなす日数(ここでは180)、B3が期限切迫とみなす月数(ここでは6)です。日数と月数は薬局ごとの目安で、法令の基準ではありません。

追加の指示を設定しておく

アドインのサイドバーの設定にあるInstructionsには、すべての会話に効く指示を書けます。次のような内容にしておくと、毎回の依頼で繰り返さずに済みます。

薬品の在庫と払出の集計を扱います。患者名や処方内容は入力しません。
判定は「候補」として出し、返品できると断定しないでください。
日数や月数の境界は設定シートのセルを参照し、式に数字を直接書かないでください。

手順1: 払出実績から最終払出日と使用量を出す

在庫シートのM列以降に、使用量の列を足します。

M2 最終払出日
 =IF(COUNTIF(払出!$B:$B,A2)=0,"",
     MAXIFS(払出!$A:$A,払出!$B:$B,A2))
N2 直近12か月の払出数
 =SUMIFS(払出!$C:$C,払出!$B:$B,A2,
     払出!$A:$A,">"&EDATE(設定!$B$1,-12))
O2 月平均の払出数
 =N2/12
P2 在庫月数
 =IF(O2=0,"使用なし",
     SUMIFS($F:$F,$A:$A,A2)/O2)
Q2 期限までの月数
 =(E2-設定!$B$1)/30

P列は、薬品コード単位の合計在庫を月平均で割ります。ロットごとの数量で割ると、複数ロットを持つ薬が実際より早く消化できるように見えるためです。

Claudeへの依頼は、列の意味と、境界を設定シートに置くことまで書きます。

「在庫」シートのA列が薬品コード、E列が使用期限、F列が現在庫数です。
「払出」シートのA列が払出日、B列が薬品コード、C列が数量です。
在庫シートのM〜Q列に、最終払出日、直近12か月の払出数、月平均、
在庫月数(薬品コード単位の合計在庫÷月平均)、期限までの月数を入れてください。
基準日は設定!B1です。式に日付や12を直接書かないでください。

返ってくる式は、上のような形になります。公式の例に沿った例示で、Claudeの実出力そのものではありません。

払出が一度もない薬は、最終払出日が空欄になります。ここが「使用なし」と読めるかは、払出シートの期間しだいです。出力期間が基準日の12か月前より短いと、動いている薬も不動に見えます。払出シートの最初の日付を、必ず確認してください。

手順2: 返品を慎む区分を先に外して判定する

判定列は、期限切れ、返品を慎む区分、不動、同成分の別銘柄で使用中、期限前に消化できない見込み、の順に判定します。慎む区分を先に当てるのは、不動の薬でも、開封済みなら候補に入れないためです。

R2 判定
 =IFS(E2<設定!$B$1,"期限切れ(返品を慎む)",
   OR(I2="開封済",J2<>"良好",H2<>"常温",K2="有"),
      "返品を慎む区分・要確認",
   AND(N(M2)<=設定!$B$1-設定!$B$2,S2-N(N2)=0),
      "不動: 返品相談候補",
   AND(N(M2)<=設定!$B$1-設定!$B$2,S2-N(N2)>0),
      "同成分の別銘柄で使用中・切替を検討",
   AND(ISNUMBER(P2),P2>Q2),
      "期限前に消化できない見込み",
   TRUE,"対象外")

S列は、同じ一般名コードの12か月の払出数(自銘柄を含む合計)です。次の手順で作ります。

判定が意図どおりかは、Claudeに根拠を聞いて確かめられます。たとえば「R15がなぜ『返品を慎む区分』になったか、参照したセルを挙げて説明して」と頼みます。答えにはセル単位の引用が付くので、クリックして該当のセルへ移れます。引用先がH列やI列ではなく別の列を指していたら、式の列のずれを疑います。

冷所品を「返品を慎む区分」に入れているのは、①が厳格な温度管理を要する医薬品を挙げているためです。冷所保存の薬がすべて厳格な管理に当たるかは、卸の返品条件で扱いが分かれます。いったん外に出して個別に確認するほうが、返品の依頼を誤る余地が少なくなります。

手順3: 同じ成分の別銘柄で使われていないかを見る

最終払出日が古い薬が、ほんとうに使われていないとは限りません。先発品の在庫が止まっていても、同じ成分・規格の後発品が毎月出ていることがあります。そうした品は不動在庫ではなく、採用銘柄の切り替えの結果です。

その区別のために、S列に成分単位の払出数を置きます。

S2 同一成分の直近12か月の払出数
 =SUMIFS(払出!$C:$C,払出!$D:$D,B2,
     払出!$A:$A,">"&EDATE(設定!$B$1,-12))

S列から自銘柄のN列を引いた「同成分の別銘柄の払出」が0より大きく、自分の銘柄の最終払出日が不動の日数より前の品は、判定が「同成分の別銘柄で使用中・切替を検討」になります。自銘柄が直近に少しだけ出ているだけで別銘柄が動いていない品は、この分岐に入らず、「期限前に消化できない見込み」か「対象外」に回ります。別銘柄が動いている品は、返品相談より先に、同成分の別銘柄から切り替えて使い切れるかを薬剤師が考える対象です。この分岐がないと、別銘柄が動いている品は「対象外」に落ち、持て余している在庫が一覧から抜けてしまいます。

落とし穴

一般名コードが空欄だと、同成分の払出が0に見える

SUMIFSは条件が空欄の行を拾いません。B列に一般名コードが入っていない行は、S列が0になり、動いている成分でも「不動」と出ます。判定の前に、COUNTBLANKでB列とD列の空欄が0件かを確かめてください。

手順4: 卸ごとの返品相談リストを作る

R列の判定が「不動: 返品相談候補」の行だけを、購入元の卸別に並べます。Claudeには次のように頼みます。

在庫シートのR列が「不動: 返品相談候補」の行だけを、L列の購入元卸ごとに
別シートへ分けてください。列は薬品名、ロット、使用期限、現在庫数、
薬価、薬価×現在庫数にします。元のシートは変更しないでください。

この依頼は、ソートとフィルターとピボットテーブルの範囲に収まります。Claude for Excelは、既存のデータを上書きする前に警告を出す仕組みを持っています。元のシートを触らない指定と合わせて、複製したブックで作業すれば、上書きの事故を避けられます。

薬価に現在庫数を掛けた額は、規模感をつかむための数字です。返品でいくら戻るかは、仕入価格や卸の取り決めで決まります。リストの列名も「薬価ベースの金額」としておくと、請求額と取り違えません。

リストを卸に持ち込む前に、人が3つを確かめます。

  • 棚の現物が、台帳どおり未開封で、汚損や破損がないか
  • 契約で「返品不能」と指定された品が混ざっていないか
  • 返品の目的が在庫調整になっていないか(月末に返して翌月に買い戻す、など)

検算の手順

判定列は一度に広い範囲を変えるので、使う前に3か所で検算します。

=COUNTA(A2:A500)-COUNTIF(R2:R500,"?*")

この式は、判定が入っていない行の数です。0でなければ、式が行末まで届いていません。

=COUNTIFS(R2:R500,"不動: 返品相談候補",I2:I500,"開封済")

この式は、開封済みなのに候補に入った行の数です。0以外なら、IFSの順序が崩れています。同じ形で、期限切れ(E列が基準日より前)、返品不能契約(K列が「有」)、冷所品も0件を確かめます。

最後に、候補の中から3品目を選び、払出シートを薬品コードで絞って、最終払出日と12か月の合計を手で数え直します。式の範囲が合っているかは、この手計算でしか確かめられません。

月次で回すときの更新点

一度作った台帳は、月に一度の棚卸しのあとに使い回せます。毎月変えるのは3つです。

  • 設定!B1の基準日を、棚卸しの日に更新する
  • 払出シートに、その月の払出を足す(古い行は消さずに残す)
  • 在庫シートのF列を、棚卸しの実数で置き換える

払出を足し続けると、12か月の窓が自動で前へ進みます。式の範囲は列全体で指定しているので、行が増えても直す箇所はありません。前月の「不動: 返品相談候補」の一覧を別シートに残しておくと、今月から新しく加わった品目だけを抜き出せます。残っている品は、卸に相談したかどうかを備考に書いておけば、同じ品を二度調べずに済みます。

よくあるつまずき

症状原因対処
動いている薬が不動と出る原因払出シートの期間が12か月に満たない対処出力期間を基準日の13か月前から取り直す
同じ薬の在庫月数がロットごとに違う原因ロット別の数量で割っている対処薬品コード単位の合計在庫で割る
候補が1件も出ない原因不動の日数が短すぎるか、慎む区分で全件が外れている対処設定!B2を見直し、慎む区分と「同成分の別銘柄で使用中・切替を検討」の件数を数える
期限が文字列で、月数がエラーになる原因日付として取り込めていない対処DATEVALUEで日付に直してから計算する
包装単位が混在して在庫月数が合わない原因錠数と箱数が同じ列にある対処管理単位をそろえてから式を入れる

洗い出しのあとに残る判断

ガイドラインは、流通関係者全体が適正な在庫量を維持するよう求めています。返品の窓口を探す前に、不動の理由が「採用薬の切り替え」「処方元の変更」「一度きりの発注」のどれかを見分けておくと、同じ薬を再び抱え込むのを防げます。評価損の観点から滞留在庫を仕分けるなら、滞留在庫の評価損をClaude for Excelで仕分ける手順が同じ作りで使えます。薬局の業務をClaudeで整える別の例は、疑義照会の記録の整え方にあります。

Claude for Excelが出すのは候補の一覧で、返品の可否はそこから先の確認で決まります。判定列の式と、慎む区分のどれにも当たらないことを確かめる検算が、リストを卸に出す前の最後の関門です。

この記事を共有:XはてブLinkedIn