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

ただ、現場で使っているExcelシートが「本当に正しい数値を出しているか」と聞かれて、自信を持って即答できるケースは多くありません。問題は“関数を知らないこと”ではなく、定義が曖昧なまま数式がブラックボックス化し、検算できないことです。
本記事の要点はシンプルです。「定義を固定し、計算を分解し、検算(テスト)できる形にする」。この3点だけで、誰が使っても説明可能な「壊れにくい(=保守できる)」月齢計算シートに近づきます。
- 月齢(総月数)と「○歳○ヶ月」の出し分けができる、分解設計の型
- DATEDIFを使う場合に“やってはいけない”落とし穴と回避策
- GeminiをQA(テスト担当)として使い、境界値テストを回す手順
- 属人化させない運用(版管理・保護・説明責任)
月齢がズレると現場で何が壊れるか

月齢のズレが招く二重チェック地獄
要点:月齢計算が曖昧だと、確認作業が属人化し、結果としてヒヤリハットの温床になります。
深刻なのは、計算ミスそのものよりも「シートを信じ切れない不安」が生む二重・三重の再確認です。小児科門前の調剤薬局では、月齢が1ヶ月ズレるだけで薬用量(mg/kg)の区切りに影響するケースもあり、Excel結果を見ても電卓やカレンダーで再計算してしまう……という運用が起きがちです。
混雑時に「2歳1ヶ月」と「2歳2ヶ月」の境界にいる患者さんが重なると、たった数分の検算でも、監査や投薬指導の集中力を削ります。ここを精神論ではなく、ロジックの可視化(=説明できる設計)で潰します。
現場で起きがちな非効率フローは次の通りです:
- 入力:生年月日と処方日(基準日)をExcelに入力
- 算出:Excelが自動計算(根拠が見えないと不安が残る)
- 再確認:カレンダーや電卓で再計算(属人化が発生)
- 記録:納得して薬歴等に記載
この「再確認」をゼロにするのではなく、“必要な検算が最短で済む形”にするのが設計のゴールです。
Excelの計算は補助輪であって最終判断ではない
要点:Excelは判断を補助する道具です。運用ルール(免責・範囲)を先に固定します。
「システムが出したから正しい」という盲信が一番危険です。ここでいう「死なないシステム」は、完璧さではなく、間違える可能性を織り込んだうえで“異常に気付ける形”を指します。
- 補助の徹底:本シート結果は補助。最終判断は添付文書・監査手順・施設ルールを優先。
- 異常の可視化:未来日付、基準日<生年月日などはセルを目立たせる(後述)。
- 変更統制:計算セルは保護し、変更は管理者の手順に統一する(版管理もセット)。
月齢の定義を決めるだけで勝負の半分が終わる

要点:Excelを触る前に「満◯ヶ月の定義」を固定してください。定義が揺れると、数式が合っていても運用が崩れます。
医療現場の計算は「仕様(ルール)=安全装置」です。関数のテクニック以前に、現場で合意した定義が必要です。
満◯ヶ月は何をもって成立とするか
要点:月末・うるう年など“境界”の扱いを、組織として一貫させます。
例として、月末生まれ(31日)を、30日までしかない月でどう扱うか。ここでズレると、予防接種の接種可否判定や説明の整合性が壊れます。
- 起算日:出生当日を0日目として扱うのか、1日目として扱うのか(施設ルールに合わせる)
- 月末処理:応当日が存在しない月の扱い(末日で満了とみなす/別ルール等)
法律上の期間計算の考え方(民法143条等)は、設計の土台として参照できる“例”にはなりますが、医療運用の最終仕様は施設ルール・監査手順に合わせて固定してください。
具体的な「定義の詰め方」を、シート冒頭に文章で残す方法は、後半の“設計図を埋め込む”で扱います。
基準日を固定する運用にする
要点:TODAY関数に依存しすぎず、必ず「基準日(処方日・来局日)」を入力セルとして分離します。
「今日時点の月齢」は便利に見えますが、後日見返したときに「その時点の計算根拠」を再現できなくなります。医療系ツールでは、計算結果と“いつ時点か”の証拠がセットです。
| 項目 | 推奨セル | 目的 |
|---|---|---|
| 生年月日 | B2:手入力(日付形式) | 患者基本データ |
| 基準日 | B3:手入力(既定は当日でもOK) | 遡り入力に対応 |
| 算出(月齢) | B4:計算セル(後述) | 監査可能な証拠 |
Excelで月齢と年齢を正確に出す堅牢数式

要点:長い“一発数式”ではなく、総月数を基準に分解します。これが保守性と検算性を同時に上げます。
医療現場の計算シートで怖いのは「合ってるか分からない」状態です。分解しておくと、ズレた瞬間にどこが原因か追えます。
「一発で解決」を捨てるのが堅牢さへの近道
要点:計算過程を見える化し、検算セルで“壊れ方”を早期発見できる形にします。
- 第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&"ヶ月"
入力エラーを物理的に封じるガードレール設定
要点:数式が正しくても、入力が崩れたら終わりです。入力規則と条件付き書式で“事故を止める”形にします。
- 生年月日セル(B2)を選択
- データ > データの入力規則
- 「日付」を選択
- 「次の値以下」:
=TODAY()
生年月日が基準日より後、または未来日付の場合に警告表示:
=OR($B$2>$B$3,$B$2>TODAY())
DATEDIFを使う場合に知っておくべき落とし穴

要点:DATEDIFは便利ですが、引数の選び方と検算が前提です。特に「MD」は避けます。
1. 「MD」引数は使わない(余り日数はEDATEで出す)
要点:「○歳○ヶ月○日」の“日”をMDで出す運用は避け、EDATE差分で検算します。
余り日数を出すなら、=基準日-EDATE(生年月日,総月数) という形に寄せると、ロジックが説明しやすく、検算にも使えます。
2. 入力候補に出にくい=属人化しやすい
要点:関数が見つけにくい・説明が残っていないシートは、後任が保守できません。
- 後任が直せない:数式が壊れた際に復元できず、手計算へ逆戻り
- 入力ミスの温床:引数の順番ミスが“気づかれないまま”残るリスク
対策は単純です。数式セルの近くに「なぜこの方式か」「検算セルの読み方」を文章で残すこと。次の章で具体例を出します。
3. 月末・うるう年の境界は「施設定義」との整合が最重要
要点:Excelの挙動がどうであれ、現場の定義に合わせて“正”を固定し、テストで担保します。
ここは関数の勝負ではなく、定義+テストの勝負です。次章でGeminiを使った境界値テストを回します。
Geminiでテストケースを量産して「検証できる」シートにする

要点:人間が思いつく例外には限界があります。AIは“医療判断”ではなく“テストケース作り”に使うのが安全です。
端っこで壊れる日付パターンをAIに洗い出させる
要点:月末・2月末・うるう年・同日などの“境界”を、10パターン以上作らせます。
Excelで生年月日(B2)と基準日(B3)から、月齢(総月数)を計算しています。月末、2月末、うるう年、同日、基準日が生年月日直前/直後など、計算ミスや解釈ズレが起きやすいテストケース(生年月日と基準日のペア)を10パターン作ってください。期待される総月数(満月齢)も添えて、Excelに貼り付けられる表形式で出力してください。なお、最終仕様は施設ルールで確定するため、曖昧なケースは“確認が必要”と注記してください。
AIの出力は“正解の断定”ではなく、テストの材料として使ってください。ここを守るだけで、YMYL的な事故を避けられます。
Excel側で自動照合する
要点:AIの期待値と、シートの計算結果をIFで突合し、目視確認の量を減らします。
判定セル例:
=IF(C2=D2,"OK","要確認")
「要確認」が出たら、関数バグ断定ではなく、定義(施設ルール)と計算のどちらがズレているかを切り分けます。これが“死なない”運用です。
属人化しない運用設計

要点:ツールは作って終わりではありません。“説明できる形”と“壊さない手順”が本体です。
シートに小さな設計図を埋め込む
要点:シート冒頭(1〜5行目)は計算ではなく取扱説明書として固定します。
- 目的:「小児薬量計算のための満月齢算出(総月数方式)」
- 更新日・作成者:責任の所在と最新版の識別
- 計算定義:施設ルール(境界・月末・起算)を文章で固定
- 検証:実施日、テストケース数、確認者(可能なら)
壊さないための権限と版管理
要点:入力セル以外は保護し、修正は別名保存で履歴を残します。
| 対策項目 | 具体アクション |
|---|---|
| セル保護 | 入力セル以外をロックし、シートを保護 |
| 入力規則 | 日付以外を弾く/未来日付を弾く |
| 版管理 | 修正時は別名保存(例:月齢計算_v1.1)+旧版保管 |
まとめ
月齢計算を正確に行うには、関数の暗記よりも「定義・分解・検算・運用」が重要です。
- 現場での「満○ヶ月」の定義を固定する
- DATEDIFを使うなら落とし穴を避け、EDATEで検算する
- Geminiで境界値テストを量産し、Excelで自動照合する
- シートを保護・版管理し、属人化(スラム化)を防ぐ
医療・調剤の最終判断は、常に施設の手順と添付文書等に従うべきです。ただ、その判断を支える“補助輪”を検証可能な形に整えることは、現場の安全性と説明責任を支えます。


コメント