アフィリエイト広告を利用しています
アフィリエイト広告を利用しています

【薬剤師向け】Excelで月齢を正確に出す方法とGemini検証

①事務攻略の書

小児科の現場や予防接種スケジュール管理では「○歳○ヶ月」という“月齢までの精度”が必要になります。

moon_age_article_overview

ただ、現場で使っているExcelシートが「本当に正しい数値を出しているか」と聞かれて、自信を持って即答できるケースは多くありません。問題は“関数を知らないこと”ではなく、定義が曖昧なまま数式がブラックボックス化し、検算できないことです。

本記事の要点はシンプルです。「定義を固定し、計算を分解し、検算(テスト)できる形にする」。この3点だけで、誰が使っても説明可能な「壊れにくい(=保守できる)」月齢計算シートに近づきます。

【この記事で得られるもの】
  • 月齢(総月数)と「○歳○ヶ月」の出し分けができる、分解設計の型
  • DATEDIFを使う場合に“やってはいけない”落とし穴と回避策
  • GeminiをQA(テスト担当)として使い、境界値テストを回す手順
  • 属人化させない運用(版管理・保護・説明責任)

月齢がズレると現場で何が壊れるか

moon_age_risk_in_pharmacy

月齢のズレが招く二重チェック地獄

要点:月齢計算が曖昧だと、確認作業が属人化し、結果としてヒヤリハットの温床になります。

深刻なのは、計算ミスそのものよりも「シートを信じ切れない不安」が生む二重・三重の再確認です。小児科門前の調剤薬局では、月齢が1ヶ月ズレるだけで薬用量(mg/kg)の区切りに影響するケースもあり、Excel結果を見ても電卓やカレンダーで再計算してしまう……という運用が起きがちです。

混雑時に「2歳1ヶ月」と「2歳2ヶ月」の境界にいる患者さんが重なると、たった数分の検算でも、監査や投薬指導の集中力を削ります。ここを精神論ではなく、ロジックの可視化(=説明できる設計)で潰します。

現場で起きがちな非効率フローは次の通りです:

  • 入力:生年月日と処方日(基準日)をExcelに入力
  • 算出:Excelが自動計算(根拠が見えないと不安が残る)
  • 再確認:カレンダーや電卓で再計算(属人化が発生)
  • 記録:納得して薬歴等に記載

この「再確認」をゼロにするのではなく、“必要な検算が最短で済む形”にするのが設計のゴールです。

Excelの計算は補助輪であって最終判断ではない

要点:Excelは判断を補助する道具です。運用ルール(免責・範囲)を先に固定します。

「システムが出したから正しい」という盲信が一番危険です。ここでいう「死なないシステム」は、完璧さではなく、間違える可能性を織り込んだうえで“異常に気付ける形”を指します。

【現場を守るためのExcel運用ルール(例)】
  • 補助の徹底:本シート結果は補助。最終判断は添付文書・監査手順・施設ルールを優先。
  • 異常の可視化:未来日付、基準日<生年月日などはセルを目立たせる(後述)。
  • 変更統制:計算セルは保護し、変更は管理者の手順に統一する(版管理もセット)。
https://zaiteku-banzai.com/youken-teigi-toha-beginner/

月齢の定義を決めるだけで勝負の半分が終わる

moon_age_definition_boundary

要点:Excelを触る前に「満◯ヶ月の定義」を固定してください。定義が揺れると、数式が合っていても運用が崩れます。

医療現場の計算は「仕様(ルール)=安全装置」です。関数のテクニック以前に、現場で合意した定義が必要です。

満◯ヶ月は何をもって成立とするか

要点:月末・うるう年など“境界”の扱いを、組織として一貫させます。

例として、月末生まれ(31日)を、30日までしかない月でどう扱うか。ここでズレると、予防接種の接種可否判定や説明の整合性が壊れます。

  • 起算日:出生当日を0日目として扱うのか、1日目として扱うのか(施設ルールに合わせる)
  • 月末処理:応当日が存在しない月の扱い(末日で満了とみなす/別ルール等)

法律上の期間計算の考え方(民法143条等)は、設計の土台として参照できる“例”にはなりますが、医療運用の最終仕様は施設ルール・監査手順に合わせて固定してください。

具体的な「定義の詰め方」を、シート冒頭に文章で残す方法は、後半の“設計図を埋め込む”で扱います。

基準日を固定する運用にする

要点:TODAY関数に依存しすぎず、必ず「基準日(処方日・来局日)」を入力セルとして分離します。

「今日時点の月齢」は便利に見えますが、後日見返したときに「その時点の計算根拠」を再現できなくなります。医療系ツールでは、計算結果と“いつ時点か”の証拠がセットです。

項目 推奨セル 目的
生年月日 B2:手入力(日付形式) 患者基本データ
基準日 B3:手入力(既定は当日でもOK) 遡り入力に対応
算出(月齢) B4:計算セル(後述) 監査可能な証拠
https://zaiteku-banzai.com/excel-stock-design-basic/

Excelで月齢と年齢を正確に出す堅牢数式

moon_age_formula_3layers

要点:長い“一発数式”ではなく、総月数を基準に分解します。これが保守性と検算性を同時に上げます。

医療現場の計算シートで怖いのは「合ってるか分からない」状態です。分解しておくと、ズレた瞬間にどこが原因か追えます。

「一発で解決」を捨てるのが堅牢さへの近道

要点:計算過程を見える化し、検算セルで“壊れ方”を早期発見できる形にします。

  • 第1層:生年月日と基準日から「総月数(満月齢)」を出す
  • 第2層:総月数から「○歳○ヶ月」を表示する
  • 第3層:余り日数(検算)を出して、境界ズレを検知する

コピペで使える「3層式」数式セット(DATEDIF版+検算)

要点:DATEDIFを使うなら、検算(余り日数)を必ずセットにします。

セルB2に生年月日、B3に基準日が入力されている前提です。

目的 推奨セル Excel数式
1. 総月数(満月齢) B4 =DATEDIF(B2,B3,"m")
2. 表示(○歳○ヶ月) B5 =DATEDIF(B2,B3,"y")&"歳"&DATEDIF(B2,B3,"ym")&"ヶ月"
3. 検算(余り日数) B6 =B3-EDATE(B2, B4)
【検算セルの読み方(運用ルール例)】
  • B6(余り日数)が負数:境界ズレの疑い(定義/入力/DATEDIF挙動を確認)
  • B6が0〜数日で極端に揺れる:月末・うるう年等の境界なので、施設ルールとの整合を確認
  • 検算がOKでも不安が残る:後述のGeminiテストケースで“意地悪入力”を追加

DATEDIFに依存しすぎない「総月数ベース」計算(代替案)

要点:DATEDIFが怖い場合は、総月数を“EDATEで補正”する形に寄せると説明しやすくなります。

Excel 365等でLET関数が使える場合:

=LET(s,B2,e,B3,

m,(YEAR(e)-YEAR(s))*12+MONTH(e)-MONTH(s),

IF(EDATE(s,m)>e,m-1,m))

LETが使えない場合(考え方は同じです):

=(YEAR(B3)-YEAR(B2))*12+MONTH(B3)-MONTH(B2)

-IF(EDATE(B2,(YEAR(B3)-YEAR(B2))*12+MONTH(B3)-MONTH(B2))>B3,1,0)

この「総月数」セルをB4に置き、表示は次のように分離できます:

  • 年(B7):=INT(B4/12)
  • 月(B8):=MOD(B4,12)
  • 表示(B9):=B7&"歳"&B8&"ヶ月"

入力エラーを物理的に封じるガードレール設定

要点:数式が正しくても、入力が崩れたら終わりです。入力規則と条件付き書式で“事故を止める”形にします。

【入力規則(例)】
  1. 生年月日セル(B2)を選択
  2. データ > データの入力規則
  3. 「日付」を選択
  4. 「次の値以下」:=TODAY()
【条件付き書式(例)】

生年月日が基準日より後、または未来日付の場合に警告表示:

=OR($B$2>$B$3,$B$2>TODAY())

https://zaiteku-banzai.com/excel-iferror-blank-rule/

DATEDIFを使う場合に知っておくべき落とし穴

datedif_pitfalls_md_warning

要点:DATEDIFは便利ですが、引数の選び方と検算が前提です。特に「MD」は避けます。

1. 「MD」引数は使わない(余り日数はEDATEで出す)

要点:「○歳○ヶ月○日」の“日”をMDで出す運用は避け、EDATE差分で検算します。

余り日数を出すなら、=基準日-EDATE(生年月日,総月数) という形に寄せると、ロジックが説明しやすく、検算にも使えます。

2. 入力候補に出にくい=属人化しやすい

要点:関数が見つけにくい・説明が残っていないシートは、後任が保守できません。

  • 後任が直せない:数式が壊れた際に復元できず、手計算へ逆戻り
  • 入力ミスの温床:引数の順番ミスが“気づかれないまま”残るリスク

対策は単純です。数式セルの近くに「なぜこの方式か」「検算セルの読み方」を文章で残すこと。次の章で具体例を出します。

3. 月末・うるう年の境界は「施設定義」との整合が最重要

要点:Excelの挙動がどうであれ、現場の定義に合わせて“正”を固定し、テストで担保します。

ここは関数の勝負ではなく、定義+テストの勝負です。次章でGeminiを使った境界値テストを回します。

Geminiでテストケースを量産して「検証できる」シートにする

gemini_testcase_generation

要点:人間が思いつく例外には限界があります。AIは“医療判断”ではなく“テストケース作り”に使うのが安全です。

端っこで壊れる日付パターンをAIに洗い出させる

要点:月末・2月末・うるう年・同日などの“境界”を、10パターン以上作らせます。

【Geminiに投げるプロンプト例】

Excelで生年月日(B2)と基準日(B3)から、月齢(総月数)を計算しています。月末、2月末、うるう年、同日、基準日が生年月日直前/直後など、計算ミスや解釈ズレが起きやすいテストケース(生年月日と基準日のペア)を10パターン作ってください。期待される総月数(満月齢)も添えて、Excelに貼り付けられる表形式で出力してください。なお、最終仕様は施設ルールで確定するため、曖昧なケースは“確認が必要”と注記してください。

AIの出力は“正解の断定”ではなく、テストの材料として使ってください。ここを守るだけで、YMYL的な事故を避けられます。

Excel側で自動照合する

要点:AIの期待値と、シートの計算結果をIFで突合し、目視確認の量を減らします。

判定セル例:

=IF(C2=D2,"OK","要確認")

「要確認」が出たら、関数バグ断定ではなく、定義(施設ルール)と計算のどちらがズレているかを切り分けます。これが“死なない”運用です。

https://zaiteku-banzai.com/ai-vibe-coding-blueprint-importance/
https://zaiteku-banzai.com/vibecoding-design-document-for-beginners/

属人化しない運用設計

operation_design_version_control

要点:ツールは作って終わりではありません。“説明できる形”と“壊さない手順”が本体です。

シートに小さな設計図を埋め込む

要点:シート冒頭(1〜5行目)は計算ではなく取扱説明書として固定します。

【ヘッダーに残すと強い4項目】
  • 目的:「小児薬量計算のための満月齢算出(総月数方式)」
  • 更新日・作成者:責任の所在と最新版の識別
  • 計算定義:施設ルール(境界・月末・起算)を文章で固定
  • 検証:実施日、テストケース数、確認者(可能なら)

壊さないための権限と版管理

要点:入力セル以外は保護し、修正は別名保存で履歴を残します。

対策項目 具体アクション
セル保護 入力セル以外をロックし、シートを保護
入力規則 日付以外を弾く/未来日付を弾く
版管理 修正時は別名保存(例:月齢計算_v1.1)+旧版保管

まとめ

月齢計算を正確に行うには、関数の暗記よりも「定義・分解・検算・運用」が重要です。

  • 現場での「満○ヶ月」の定義を固定する
  • DATEDIFを使うなら落とし穴を避け、EDATEで検算する
  • Geminiで境界値テストを量産し、Excelで自動照合する
  • シートを保護・版管理し、属人化(スラム化)を防ぐ

医療・調剤の最終判断は、常に施設の手順と添付文書等に従うべきです。ただ、その判断を支える“補助輪”を検証可能な形に整えることは、現場の安全性と説明責任を支えます。

当ブログは、お風呂好きのみなさんとに快適なお風呂生活を楽しんで頂きたい思いで運営しています。
「記事が役に立った」「続きも読んでみたい」と感じていただけたら、下記リンクからのご利用・ご支援で応援してもらえると嬉しいです。

※Amazonのアソシエイトとして、「メリ爺の事務攻略万歳」は適格販売により収入を得ています。

①事務攻略の書
シェアする
メリ爺をフォローする

コメント

タイトルとURLをコピーしました