excel

【Excel】エクセルで日数を計算する方法(初日を含む期間の数え方)

エクセルで初日を含む日数を計算する数式 - 開始日と終了日の差に1を加える計算
当サイトでは記事内に広告を含みます

Excelで開始日と終了日から日数を計算するときは、単純な引き算だけでは「初日を含めるか」が分かりにくく、想定より1日少ない結果になることがあります。

たとえば4月1日から4月30日までを数える場合、差分だけなら29日ですが、4月1日と4月30日の両方を期間に含めるなら30日です。

この記事では、日付の基本的な差分計算、初日を含む期間の日数を求める数式、営業日だけを数える関数、エラーを防ぐ設定まで、実務で使いやすい形で解説します。

初日を含む日数の基本式は、終了日から開始日を引いた値に1を加える計算です。

終了日-開始日+1

請求期間、契約日数、休暇日数、在庫の保管日数、プロジェクトの進捗管理など、日付を扱う表にそのまま応用できます。

 

エクセルで初日を含む日数を計算する数式

それではまず、開始日と終了日を入力して初日を含む日数を算出する基本の方法について解説していきます。

開始日 終了日 初日を含む日数
2026/4/1 2026/4/30 30

 

開始日と終了日の差に1を加える計算

開始日をA2セル、終了日をB2セルに入力し、日数をC2セルに表示する例で考えます。

通常の引き算である=B2-A2は、開始日の翌日から終了日までの経過日数を返します。

4月1日から4月30日までなら、Excel内部では二つの日付の差が29として計算されます。

しかし、初日である4月1日を期間に入れる場合は、計算結果に必ず1を足す必要があります。

C2セルに入力する数式

=B2-A2+1

この数式では、B2の終了日からA2の開始日を引き、開始日そのものの1日分を加算します。

日付は見た目には文字列に見えても、Excelでは連続したシリアル値として保存されています。

そのため、日付同士を引き算すれば日数になり、さらに1を加えるだけで両端を含む期間日数になります。

エクセルで初日を含む日数を計算する数式 - 開始日と終了日の差に1を加える計算

開始日と終了日が同じ日である場合にも、この式は便利です。

同日ならB2-A2は0ですが、+1を加えることで結果は1となり、当日だけの予定や日帰り作業も自然に表現できます。

反対に、初日を数えない経過日数を求めたい業務では、+1を外して=B2-A2を使い分けましょう。

【操作のポイント】開始日と終了日の両方を日数に含める帳票では、引き算の最後に+1を付けることが基本です。

 

数式を下方向へコピーする操作

複数の案件や期間を一覧で管理する場合は、最初の数式を入力してから下方向へコピーすると効率的です。

C2セルに=B2-A2+1を入力してEnterキーを押すと、計算結果が表示されます。

次にC2セルを選択すると、セル右下に小さな四角形であるフィルハンドルが表示されます。

その四角形を下へドラッグすると、C3、C4、C5と数式が自動的にコピーされます。

表の隣に連続したデータがある場合は、フィルハンドルをダブルクリックする方法も有効です。

エクセルで初日を含む日数を計算する数式 - 数式を下方向へコピーする操作

コピー後のC3セルでは=B3-A3+1、C4セルでは=B4-A4+1のように、参照先が行ごとに自動調整されます。

数式を直接書き直さなくても、相対参照によって各行の日付を計算できる点がExcelの大きな利点です。

ただし、見出し行を含めた範囲に数式をコピーしないように注意しましょう。

サンプルデータでは1行目を見出しとし、実際のデータは2行目から入力する構成にすると、並べ替えやフィルターも使いやすくなります。

【操作のポイント】数式は最初のデータ行で完成させ、フィルハンドルで下へ展開すると入力ミスを減らせます。

 

日付表示と計算結果の表示形式

日付を入力したのに計算できない場合は、セルが日付ではなく文字列として扱われている可能性があります。

左寄せで表示された日付、先頭にアポストロフィが付いた日付、全角記号が混ざった日付は特に確認が必要です。

A2とB2を選択し、ホームタブの表示形式から日付を選ぶと、日付として認識されているか確認できます。

C列の結果は通常の数値でよいため、表示形式は標準または数値に設定します。

結果の後ろに日を付けて見やすくしたい場合は、セルの書式設定でユーザー定義を選び、0″日”と入力します。

この設定は値を文字列に変えるものではなく、計算可能な数値のまま表示だけに単位を追加する方法です。

日付を文字列として入力すると、引き算でVALUE!エラーになることがあります。

入力後に日付として右寄せ表示されているかを確認し、必要に応じて表示形式を日付へ変更しましょう。

【操作のポイント】開始日と終了日は日付形式、計算結果は数値形式に分けると、式の確認と集計がしやすくなります。

 

終了日を含む期間と含まない期間の違い

続いては、日付計算で混同しやすい開始日と終了日の扱いを確認していきます。

期間の考え方 数式 4月1日から4月30日
経過日数 =B2-A2 29日
初日を含む日数 =B2-A2+1 30日

 

経過日数を求める引き算の考え方

Excelの日付の引き算は、二つの日付の間に何日分の差があるかを返します。

4月1日の翌日は4月2日であり、その差は1日です。

このため、4月1日から4月2日までを=B2-A2で計算すると1になります。

宿泊数、納期までの残り日数、前回実施日からの経過日数などでは、この差分計算が適しています。

「何日後か」「何日経過したか」という表現が業務文書にあるときは、初日を含めない計算が必要な場面かもしれません。

作成前に、開始日の時点を0日目と見るのか、1日目と見るのかを決めることが大切です。

終了日を含む期間と含まない期間の違い - 経過日数を求める引き算の考え方

たとえば注文日が4月1日で、発送予定日が4月4日なら、発送まで3日後という表現では=B2-A2が自然です。

一方で注文日から発送予定日までの対応期間を記録するなら、4月1日、2日、3日、4日の4日間として数えることがあります。

【操作のポイント】経過した日数を知りたいのか、期間内に含まれる日数を知りたいのかを最初に区別します。

 

初日と最終日を含める業務上の判断

終了日を含む期間と含まない期間の違い - 初日と最終日を含める業務上の判断

初日を含む計算は、契約の有効期間、イベント開催日数、休業期間、レンタル利用日数などでよく使われます。

4月1日開始、4月3日終了という記載なら、通常は1日、2日、3日の3日間と読むためです。

ただし、利用料や賃料の計算では、時間単位の締め時刻や約款が優先される場合があります。

Excelの数式は計算を正確にしますが、何を1日と見なすかというルール自体は自動で判断しません。

社内の既存帳票、契約書、請求ルールを確認して、同じ基準を表全体へ適用しましょう。

終了日を含むと決めた場合は、列見出しを「期間日数 初日含む」のように明確にしておくと、後から表を見る人も誤解しにくくなります。

開始日と終了日を含む期間

=終了日セル-開始日セル+1

開始日を含まず終了日までの経過日数

=終了日セル-開始日セル

【操作のポイント】列名に初日含むと明記すると、+1の意味を数式を開かずに共有できます。

 

月またぎと年またぎでの計算結果

日付の引き算は、月末や年末をまたぐ場合でも同じ数式で計算できます。

たとえば2026年12月29日から2027年1月3日までを初日含みで求める場合も、=B2-A2+1で6日になります。

手作業で月ごとの日数を足す必要はなく、うるう年の2月29日もExcelの日付として正しく入力されていれば自動で反映されます。

この性質により、長い契約期間や年度をまたぐ休暇期間も、一つの式で安定して計算できるわけです。

ただし、年だけを入力した値や、2026年4月のような月単位の文字列は日付として計算できません。

月単位の期間を扱う場合は、月初日と月末日を日付として別セルに設定してから計算しましょう。

【操作のポイント】月またぎでも数式は変えず、開始日と終了日を完全な日付として入力します。

 

DATEDIF関数による年数月数日数の算出

続いては、日数だけでなく年数や月数も含めて期間を表示したい場合のDATEDIF関数を確認していきます。

開始日 終了日 年数 月数
2024/4/1 2026/10/13 2 30
期間計算.xlsx – Excel − □ ×
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示
貼り付け
B
罫線
中央揃え
fx=DATEDIF(A2,B2,”d”)+1
A B C
1 開始日 終了日 日数
2 2026/4/1 2026/4/30 30
C2に数式を入力 ←

 

DATEDIF関数で総日数を求める方法

DATEDIF関数は、開始日と終了日の間隔を年、月、日などの単位で返す関数です。

総日数を求める場合は、C2セルに=DATEDIF(A2,B2,”d”)と入力します。

ただし、この結果は通常の引き算と同様に、開始日を含まない差分日数です。

初日を含む日数にするなら、数式の末尾に+1を追加します。

初日を含む総日数をDATEDIF関数で求める式

=DATEDIF(A2,B2,”d”)+1

“d”は日単位での差を指定する引数です。

開始日がA2、終了日がB2であれば、4月1日から4月30日までの結果は30になります。

DATEDIF関数でも初日を含めるには+1が必要という点は、単純な引き算の場合と同じです。

日数だけを求める用途では=B2-A2+1のほうが読みやすいこともありますが、年数や月数と並べて管理する表ではDATEDIF関数が役立ちます。

【操作のポイント】DATEDIF関数の単位を日数にするときは、3番目の引数へ”d”を指定します。

 

年数と月数を別セルに表示する方法

勤続年数、契約更新までの期間、保有期間などでは、年数と月数を分けて表示したいことがあります。

満年数は=DATEDIF(A2,B2,”y”)で求められます。

開始日から終了日までの総月数は=DATEDIF(A2,B2,”m”)です。

年数を除いた残りの月数だけを求めたい場合は、=DATEDIF(A2,B2,”ym”)を使います。

たとえば2年6か月という表示を作るなら、年数セルと残り月数セルを用意し、それぞれの結果を組み合わせます。

年数と残り月数を文章として表示する例

=DATEDIF(A2,B2,”y”)&”年”&DATEDIF(A2,B2,”ym”)&”か月”

この式の結果は文字列になるため、そのまま合計や平均を計算する用途には向きません。

数値として利用する年数や月数は別セルに保持し、表示専用のセルで文章化すると管理しやすくなります。

計算用の数値と見せるための文字列を分けることが、再利用できる表を作るコツです。

【操作のポイント】年数、月数、表示用の文章を別列にすると、後から集計式を追加しやすくなります。

 

DATEDIF関数で発生するエラーの確認

DATEDIF関数では、開始日が終了日より後になっているとNUM!エラーが表示されます。

入力順を間違えた可能性があるため、A列の開始日とB列の終了日を確認しましょう。

日付が空白のときに不要なエラーを表示したくない場合は、IF関数で入力有無を判定します。

開始日または終了日が未入力なら空白にする式

=IF(OR(A2=””,B2=””),””,DATEDIF(A2,B2,”d”)+1)

OR関数は、A2またはB2のどちらかが空白ならTRUEを返します。

入力がそろっていない段階では空白を表示し、両方の日付が入った時点で日数を計算する仕組みです。

入力途中の表でエラー表示が並ぶのを防げるため、共有用の管理表でも見栄えが整います。

【操作のポイント】開始日が終了日より前か、日付が両方入力されているかを確認してからDATEDIF関数を使います。

 

営業日だけを数えるNETWORKDAYS関数

続いては、土日や祝日を除外して実際の営業日数を求める方法を確認していきます。

開始日 終了日 営業日数 祝日一覧
2026/4/1 2026/4/10 8 F2からF10

 

土日を除外するNETWORKDAYS関数

平日のみを日数として数えたい場合は、NETWORKDAYS関数を使います。

開始日がA2、終了日がB2の場合、=NETWORKDAYS(A2,B2)と入力します。

この関数は開始日と終了日を含み、土曜日と日曜日を自動で除外します。

つまり、営業日を求めるNETWORKDAYS関数は初日を含む数え方が標準です。

月曜日から金曜日までなら5、金曜日から翌週月曜日までなら2という結果になります。

納期、問い合わせ対応日数、工数の予定、稼働日ベースの進捗管理で使いやすい関数です。

【操作のポイント】土日を除いた平日日数なら、+1を付けずにNETWORKDAYS関数を使います。

 

祝日リストを参照する計算

祝日も営業日から除外するなら、別の列に祝日の日付一覧を作成します。

たとえばF2からF20に祝日を入力した場合、数式は=NETWORKDAYS(A2,B2,F2:F20)です。

3番目の引数に祝日範囲を指定すると、その範囲内にある日付が営業日数から差し引かれます。

祝日リストには年末年始の社休日、会社の創立記念日、計画休業日も追加できます。

同じ祝日範囲を多くの数式で使うなら、絶対参照の$F$2:$F$20にすると、数式コピー時に範囲がずれません。

祝日を除いた営業日数の式

=NETWORKDAYS(A2,B2,$F$2:$F$20)

祝日一覧は日付として入力し、空白行や文字列を混在させないことが正確な集計につながります。

【操作のポイント】祝日範囲は絶対参照にして、全行で同じ休日カレンダーを参照させます。

 

休日パターンを指定するNETWORKDAYS.INTL関数

土日休みではなく、日曜日と月曜日が休み、またはシフト制で休日が異なる職場もあります。

このような場合はNETWORKDAYS.INTL関数を使用します。

=NETWORKDAYS.INTL(A2,B2,1,F2:F20)のように入力すると、3番目の引数で休日パターンを指定できます。

1は土曜日と日曜日を休日とする標準的な指定です。

休日コードを変更すれば金土休みなどにも対応でき、7桁の文字列で曜日ごとの勤務日設定を表すこともできます。

ただし、休日コードを独自に設定する表では、計算ルールをシート上に注記しておくことが重要です。

担当者だけが意味を理解している表では、引き継ぎ時に日数の根拠が分からなくなります。

【操作のポイント】通常と異なる休日がある場合はNETWORKDAYS.INTL関数を使い、休日ルールも併記します。

 

日付計算で起こりやすいエラーと対処

続いては、日数が正しく表示されないときに確認したい入力内容と数式の対処を確認していきます。

症状 主な原因 確認方法
VALUE!エラー 日付が文字列 表示形式と入力内容
負の数 開始日と終了日が逆 日付の順序

 

開始日と終了日が逆になった場合

開始日より終了日が前の日付になっていると、引き算の結果は負の数になります。

日数として常に正の値を表示したいだけなら、ABS関数で差の絶対値を取得できます。

日付の順序にかかわらず差の日数を表示する式

=ABS(B2-A2)+1

ただし、開始日と終了日の入力ミスを見逃したくない管理表では、ABS関数だけで解決しないほうが安全です。

入力者へ確認を促すため、IF関数でメッセージを表示する方法があります。

=IF(B2<A2,”日付を確認”,B2-A2+1)とすれば、終了日が早いときに計算せず注意を表示できます。

誤入力を隠すより、見つけられる仕組みにするほうが、請求や契約に関わる表では安心です。

【操作のポイント】日付の順序が重要な表では、負の数を絶対値に変える前に入力ミスを検出します。

 

空白セルを含む数式の整え方

開始日または終了日が未入力の行では、計算列を空白にしておくと一覧が読みやすくなります。

最も分かりやすい式は、=IF(COUNTA(A2:B2)<2,””,B2-A2+1)です。

COUNTA(A2:B2)は、A2からB2までに入力されているセルの個数を数えます。

二つの日付がそろっていない場合は空白を返し、そろった場合だけ日数を表示します。

二つの日付が入力されたときだけ初日を含む日数を表示する式

=IF(COUNTA(A2:B2)<2,””,B2-A2+1)

空白に見えても数式が入っているため、後から日付を追加すれば自動で計算されます。

未入力行をあらかじめ用意する予定表や申請管理表では特に便利な方法です。

【操作のポイント】空白の行に不要な0やエラーを出さないため、IF関数で入力済みかどうかを判定します。

 

時刻を含む日時データの扱い

開始日時と終了日時に時刻まで入力している場合、引き算の結果には小数が含まれることがあります。

たとえば4月1日12時から4月2日12時までは、差が1日です。

一方で4月1日12時から4月2日9時までは、差が0.875日のように表示されます。

日付単位で数えたいなら、INT関数やROUNDDOWN関数を使う前に、どの時点を1日と数えるかを確認しましょう。

開始日と終了日の日付部分だけを比較する場合は、=INT(B2)-INT(A2)+1のように時刻部分を切り捨てます。

この式は両日をカレンダー上の日として数えるため、同日の異なる時刻でも1日になります。

時間の差を求める計算と暦の日数を求める計算は別物です。

【操作のポイント】日時データでは、24時間単位の経過時間なのか、カレンダー上の日数なのかを先に決めます。

 

まとめ エクセルで初日を含む期間の日数を計算する方法

Excelで開始日と終了日から日数を求める基本は、終了日から開始日を引く計算です。

初日を含む期間として数える場合は、=B2-A2+1を使うことで、開始日と終了日の両方を正しく日数へ含められます。

4月1日から4月30日までなら、差分の29日ではなく30日として計算するための+1が重要です。

経過日数、残日数、宿泊数のように初日を含めないケースでは、=B2-A2を使います。

平日だけを数える必要があるならNETWORKDAYS関数、祝日や独自の休日も除外するならNETWORKDAYS.INTL関数が便利です。

年数や月数を分けて管理したい場合はDATEDIF関数も活用できます。

また、日付が文字列になっていないか、開始日と終了日の順序が正しいか、時刻を含むデータではないかも確認しましょう。

日数を使う目的に合わせて初日を含めるかどうかを決め、列見出しや注記にもルールを残すことが、誤解のないExcel表づくりにつながります。