目的別
日付を計算する
日付を計算するとき、使える関数は複数あります。どれを選ぶかは、やりたいことの条件で決まります。
先に決めること。 日数か、月数か、営業日か。ここが決まれば、関数は1つに絞れます。
記載内容は 2026年8月時点のものです。ExcelとGoogleスプレッドシートで使える関数が違う場合があります。

このページの中身(26項目)
場面別・使う関数の早見
営業日の計算には祝日の一覧が別に必要です。用意しないと祝日が営業日になります。
表の使い方
左の列で自分のやりたいことを探し、右の関数の記事に進んでください。複数に当てはまる場合は、条件が多いほうを選んでください。条件が少ない関数で書くと、後から条件を足せません。
1. 日数の差
使うのは DAYS です。
=DAYS(終了日, 開始日)
2つの日付の差を日数で返す関数です。日数の差を出す場面で使います。
つまずきやすいところ
引数の順番が終了日・開始日です。逆に書くと符号が反転します。
この場面で確認すること
データの型が揃っているかを先に見てください。画面上は同じに見えても、数値と文字列は一致しません。

2. 年月日の差
使うのは DATEDIF です。
年月日の差ときの定番です。条件の数と、返したい値の形で選んでください。
つまずきやすいところ
範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。
この場面で確認すること
データの型が揃っているかを先に見てください。画面上は同じに見えても、数値と文字列は一致しません。
3. 月末を求める
使うのは EOMONTH です。
月末を求めるときの定番です。条件の数と、返したい値の形で選んでください。
つまずきやすいところ
範囲の行数が揃っているか、参照を固定したか。この2つで、結果がずれる原因の大半が説明できます。
この場面で確認すること
データの型が揃っているかを先に見てください。画面上は同じに見えても、数値と文字列は一致しません。
4. 月数を足す
使うのは EDATE です。
=EDATE(開始日, 月数)
指定した月数だけ前後した日付を返す関数です。1か月後を出す場面で使います。
つまずきやすいところ
月末の扱いに注意してください。1月31日の1か月後は2月28日になります。
この場面で確認すること
データの型が揃っているかを先に見てください。画面上は同じに見えても、数値と文字列は一致しません。
5. 営業日を足す
使うのは WORKDAY です。
=WORKDAY(開始日, 日数, [祝日])
土日と祝日を除いた営業日後の日付を返す関数です。5営業日後を出す場面で使います。
つまずきやすいところ
祝日の一覧を別に用意しないと、祝日が営業日として数えられます。
この場面で確認すること
データの型が揃っているかを先に見てください。画面上は同じに見えても、数値と文字列は一致しません。
6. 営業日数を数える
使うのは NETWORKDAYS です。
=NETWORKDAYS(開始日, 終了日, [祝日])
2つの日付の間の営業日数を数える関数です。営業日数を数える場面で使います。
つまずきやすいところ
開始日と終了日の両方が含まれます。片方を除くなら1を引いてください。
この場面で確認すること
データの型が揃っているかを先に見てください。画面上は同じに見えても、数値と文字列は一致しません。
選び方の順番
日数か、月数か、営業日か。この一点が決まらないまま関数を探すと、どれも当てはまるように見えて決まりません。
1. 出したい結果を一文で書く
「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。
2. 条件の数を数える
条件が1つか、複数か。ここで使える関数が分かれます。将来増える可能性があるなら、最初から複数条件に対応する形にしてください。
3. 返したい値の形を決める
1つの値か、複数行か。複数行を返す関数は、展開先を空けておく必要があります。
4. 共有先の環境を確認する
新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。
5. 短く書けるほうを選ぶ
結果が同じなら、短く書けるほうが後から読みやすくなります。後から読むときの負担が違います。
この記事で使っている言葉
説明に出てくる言葉を整理しておきます。意味を取り違えると、手順の途中で迷います。
引数
関数の括弧の中に渡す値のことです。DAYSでは =DAYS(終了日, 開始日) の括弧内が引数にあたります。順番に意味があるため、位置を入れ替えると結果が変わります。
範囲
A2:A100 のように、複数のセルをまとめて指定したものです。行数が揃っていないと、複数の範囲を渡す関数では結果が狂います。
絶対参照と相対参照
$A$2 のように $ を付けたものが絶対参照で、コピーしても動きません。A2 は相対参照で、コピーした方向に応じてずれます。この使い分けが、結果がずれる原因の大半を占めます。
配列
1つの数式が複数の値を返す形です。返した先のセルが埋まっていると展開できず、エラーになります。
揮発性
関係のない編集でも再計算される性質です。NOW TODAY INDIRECT OFFSET が該当します。多用するとファイル全体が重くなります。
値として貼り付ける
数式ではなく計算結果だけを残す操作です。参照元を消しても壊れなくなり、再計算の対象からも外れます。
作業列
途中の計算結果を置くための列です。短く分けて書くほうが、後から読むときの負担も小さくなります。完成後に非表示にすれば、見た目は変わりません。
DAYSの応用
基本形が動くようになったら、次はこの形です。実務ではここまで使えると、たいていの要望に応えられます。
経過日数を出す
=DAYS(TODAY(),A2)
経過日数を出す形です。基本形との違いは、渡している引数だけです。
分解して読む
内側の括弧から順に評価されます。一部だけを別のセルに貼って結果を見ると、どこまで正しく動いているかが分かります。
使うときの注意
参照する範囲を、自分の表に合わせて置き換えてください。関数名と引数の順番は変えません。
期限を過ぎた行に印を付ける
=IF(DAYS(TODAY(),A2)>30,"期限超過","")
期限を過ぎた行に印を付ける形です。基本形との違いは、渡している引数だけです。
分解して読む
内側の括弧から順に評価されます。一部だけを別のセルに貼って結果を見ると、どこまで正しく動いているかが分かります。
使うときの注意
参照する範囲を、自分の表に合わせて置き換えてください。関数名と引数の順番は変えません。
さらに複雑にする前に
入れ子が3段を超えたら、作業列に分けてください。1つの数式にまとめることに価値はありません。後から読める形のほうが、結果的に速く終わります。
応用が必要かどうかの判断
基本形を繰り返し書いて済むなら、応用は不要です。同じ作業が月に何度も発生する場合だけ、仕組みにしてください。
実際にあった相談と、その原因
寄せられる相談を、原因ごとに整理しました。近いものを探してください。
「昨日まで動いていた数式が壊れた」
参照先の表で、列が挿入されたか削除されたかのどちらかです。列番号を直書きした式は、参照先の列が増減した時点で別の意味になります。一時的な対処と恒久対処を分けてください。後者は位置に依存しない書き方です。
「合計が1円合わない」
丸めの位置が揃っていません。表示形式で小数を隠しても、値そのものは丸められません。行ごとに丸めるのか、合計してから丸めるのかで結果が変わります。各行で丸めるか、合計してから丸めるかで結果が変わります。
「一部の行だけ結果がおかしい」
その行のデータだけ型が違うか、余分な空白が入っています。=ISNUMBER(A2) と =LEN(A2) を並べて、正常な行と見比べてください。
「下にコピーすると値が変わる」
参照を固定していません。動いてはいけない範囲に $ を付けてください。上の数行は正しく動くため、気づくのが遅れます。
「共有したら相手の画面でエラーになる」
DAYSや組み合わせている関数が、相手の環境で使えません。#NAME? が出ている場合はこれです。対応範囲の広い書き方に変えるか、値として渡してください。
「重くて開けない」
列全体の指定と、揮発性の関数が原因のことがほとんどです。範囲を区切り、確定した期間は値に変換してください。
数式を使わないという選択
すべてを数式で解決する必要はありません。機能で済むものは、そちらのほうが保守が楽です。
ピボットテーブルで足りる場合
集計の軸が決まっているなら、集計機能のほうが速く、保守も簡単です。数式で組む理由がないか、一度確認してください。
フィルタで足りる場合
一時的に絞り込んで見るだけなら、フィルタ機能で十分です。ただし共有中のファイルでは、他の人の表示にも影響します。そこが問題になる場合だけ、関数で抽出してください。
条件付き書式で足りる場合
色を付けたいだけなら、列を増やす必要はありません。ただし範囲が広いほど負荷になるため、必要な範囲に絞ってください。
入力規則で防げる場合
誤りを後から探すより、入力の段階で防ぐほうが手間がかかりません。選択肢を決められる項目は、プルダウンにしてください。
手作業のほうが早い場合
一度きりの作業で、行数が少ないなら、手で直すほうが早いことがあります。繰り返す作業かどうかで判断してください。
それでも数式を使う理由
元データが更新される表では、数式が最も確実です。手作業は、更新のたびに同じ手間がかかり、抜けも起きます。
よく組む形をそのまま貼る
DAYSを実務で使うとき、決まった組み方があります。貼って範囲を直せば動きます。
空欄なら計算しない
=IF($A2="", "", DAYS(...))
未入力の行に0やエラーが並ぶのを防ぎます。集計表では必ず入れてください。
エラーを空欄にする
=IFERROR(DAYS(...), "")
配布用の表を整える段階で使います。原因を追っている間は外してください。
エラーに文言を出す
=IFERROR(DAYS(...), "要確認")
空欄より実務では役に立ちます。後からフィルタで抽出できるためです。
条件で使い分ける
=IF($B2="対象", DAYS(...), 0)
対象外の行を0にする形です。合計に含めたくない行がある場合に使います。
DATEDIF と組み合わせる
=DATEDIF(DAYS(...))
内側から評価されます。3段以上の入れ子になったら作業列に分けてください。
結果を丸める
=ROUND(DAYS(...), 0)
小数の誤差を残したまま集計すると、合計が1円ずれます。丸める位置を決めてください。
貼るときの注意
... は仮置きです。実例から選んで差し替えてください。参照を固定するかどうかは、コピーする方向で決まります。下方向なら行、右方向なら列を固定するかを先に判断してください。
DAYSを身につける順序
一度に全部を覚える必要はありません。使う順に覚えれば足ります。
まず、基本形1つだけ
=DAYS(B2,A2)
日数の差を出す形です。まずこれだけを覚えてください。実務で使う場面の大半はこの形で足ります。
次に、参照の固定
コピーでずれてよい参照と、ずれてはいけない参照を分けて考えます。ここを理解すると、コピーで結果が狂うことがなくなります。
次に、エラーの扱い
=IFERROR(DAYS(...),"") の形です。配布する表では必要になります。ただし原因を追う段階では外してください。
次に、組み合わせ
DATEDIF など、目的の近い関数と組み合わせる形です。ここまで来ると、たいていの要望に応えられます。
最後に、代替手段
DAYS以外の書き方も知っておくと、環境が変わったときに困りません。日付を計算するが使えない環境に当たったとき、別の書き方に切り替えられます。
覚えなくてよいこと
すべての引数を暗記する必要はありません。書き始めれば候補が出ます。覚えるべきなのは、何ができる関数かという一点だけです。
DAYSと似た関数の違い
名前が近い関数は、目的が微妙に違います。取り違えると結果が変わります。
DAYS と DATEDIF
DAYSは2つの日付の差を日数で返す関数です。DATEDIFとは、扱えるデータの形か、返す値の種類が違います。
どちらでも書ける場面では、短く書けるほうを選んでください。
DAYS と NETWORKDAYS
DAYSは2つの日付の差を日数で返す関数です。NETWORKDAYSとは、扱えるデータの形か、返す値の種類が違います。
どちらでも書ける場面では、短く書けるほうを選んでください。
DAYS と TODAY
DAYSは2つの日付の差を日数で返す関数です。TODAYとは、扱えるデータの形か、返す値の種類が違います。
どちらでも書ける場面では、短く書けるほうを選んでください。
判断の基準
- 出したい結果を一文で書く
- 条件の数を数える
- 返したい値が1つか複数かを決める
- 共有先の環境を確認する
- 短く書けるほうを選ぶ
この順で考えれば、関数は1つに絞れます。一覧から選ぼうとすると、どれも使えそうに見えて決まりません。
数式の前に、データを整える
DAYSが意図通りに動かない原因の多くは、数式ではなく元データにあります。書き直す前に、渡しているデータを確認してください。
型を揃える
=ISNUMBER(A2)
数値として入っているかを判定します。見た目が数字でも文字列なら FALSE になります。システムから書き出したデータでは、これが原因のことが多くあります。
前後の空白を落とす
=TRIM(A2)
前後の空白と、語間の連続した空白を1つに詰めます。見た目では判別できないため、検索や集計が合わない原因になります。
全角と半角を揃える
=ASC(A2)
全角の英数字と記号を半角にします。逆方向は JIS です。手入力が混じる列では、この差が原因になりがちです。
改行を取り除く
=SUBSTITUTE(A2,CHAR(10),"")
セル内改行はコピー時に紛れ込みます。CHAR(10) が改行文字です。
文字数を比べて確認する
=LEN(A2)&" / "&LEN(B2)
見た目が同じなのに一致しないとき、まずこれを見ます。数が違えば、空白か不可視文字が入っています。
掃除は作業列にまとめる
数式の中に掃除を書き込むと、長くなって読めなくなります。掃除済みの値を作業列に出し、そこを参照する形にしてください。元データを直接書き換えないので、後から検証できます。
エラーが出たときの読み方
DAYSでエラーが出たとき、記号ごとに原因が決まっています。端から直すより、記号を見て該当する項目だけを確認してください。
| 記号 | 意味 | 最初に見るところ |
|---|---|---|
#N/A | 検索した値が見つからない | 空白・全角半角・型。原因はほぼこの3つのどれかです |
#REF! | 参照先が消えている | 参照していた行や列を削除していないかを確認してください |
#VALUE! | 引数の型が合っていない | 数値を渡すべきところに文字列が入っていないかを確認してください |
#DIV/0! | 0で割っている | 割る側が0または空欄になっていないかを確認してください |
#NAME? | 関数名が認識されていない | 綴りの誤りか、その環境で使えない関数かを確認してください |
#NUM! | 数値として扱えない | 指定した順位や桁数が範囲を超えていないかを確認してください |
#N/A が出た場合
検索した値が見つからない状態です。空白・全角半角・型。原因はほぼこの3つのどれかです。
DAYSに限らず起きるエラーですが、原因の場所は数式そのものではなく、参照先のデータにあることがほとんどです。
#REF! が出た場合
参照先が消えている状態です。参照していた行や列を削除していないかを確認してください。
DAYSに限らず起きるエラーですが、原因の場所は数式そのものではなく、参照先のデータにあることがほとんどです。
#VALUE! が出た場合
引数の型が合っていない状態です。数値を渡すべきところに文字列が入っていないかを確認してください。
DAYSに限らず起きるエラーですが、原因の場所は数式そのものではなく、参照先のデータにあることがほとんどです。
#DIV/0! が出た場合
0で割っている状態です。割る側が0または空欄になっていないかを確認してください。
DAYSに限らず起きるエラーですが、原因の場所は数式そのものではなく、参照先のデータにあることがほとんどです。
エラーを隠すべきかどうか
IFERROR は表示を消すだけで、原因はそのまま残ります。原因を追っている段階では外してください。配布用の表に仕上げる段階になってから包むのが正しい順序です。
ExcelとGoogleスプレッドシートの違い
DAYSは両方で使えますが、周辺の挙動に差があります。共有先の環境が違う場合は、先に確認してください。
使える関数が違う
FILTER UNIQUE SORT などは、Excelでは比較的新しい機能です。古い環境で開くと #NAME? になります。社外に渡すファイルでは、この点だけで使う関数が変わります。
配列の扱いが違う
Googleスプレッドシート側は ARRAYFORMULA で範囲全体に適用する書き方をします。Excelでは自動的に広がる仕様になっています。同じ結果を出す書き方が違うため、そのまま移すと動きません。
引数の区切りが違うことがある
環境によって区切り文字が変わるため、コピーした式が動かないことがあります。コピーした数式が動かない場合、ここを疑ってください。
日付の基準が違う
日付の内部表現は同じでも、基準となる日がずれている場合があります。ファイルをまたいで日付を計算するときは注意してください。
どちらで作るか
共有先が決まっていないなら、対応範囲の広い書き方を選んでください。後から書き換えるより、最初から限定するほうが手戻りが少なくなります。
数が増えて重くなったとき
数式が数千行に増えると、再計算に時間がかかるようになります。効果の大きい順に挙げます。
範囲を列全体で指定しない
A:A は書くのが楽ですが、空行まで対象に含めます。$A$2:$A$5000 のように行を区切ってください。行数が多いほど差が出ます。
同じ計算を繰り返さない
同じ引数でDAYSを何度も書いているなら、作業列に一度だけ出して、他はその列を参照させてください。
揮発性の関数を減らす
NOW TODAY INDIRECT OFFSET は、どこを編集しても計算し直されます。多用すると、ファイル全体が重くなります。
確定した部分は値にする
締めた期間の集計は、値貼り付けにしてください。数式が残っている限り、再計算の対象になり続けます。
条件付き書式を減らす
数式を使った条件付き書式は、範囲が広いほど負荷になります。必要な範囲だけに絞ってください。
引き継ぐときに書いておくこと
数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。
何を出している数式か
DAYSで2つの日付の差を日数で返すという意図を、一行で書いてください。読めば分かると思っても、数か月後の自分には分かりません。
どの表を参照しているか
参照先のシート名と、その表の更新担当。参照先が別ファイルなら、その場所も書いてください。
該当しないときの扱い
該当なしをどう表示しているか。書いていないと、受け取った側は空欄をデータなしと読みます。
触ってはいけない場所
引数の順番が終了日・開始日です。逆に書くと符号が反転します。この点を書いておかないと、引き継いだ人が同じところでつまずきます。
使った関数の対応環境
新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、必ず明記してください。
よくある間違い
実際に相談が多いものを挙げます。どれも一度は踏む種類のものです。
参照を固定していない
下方向にコピーしたときに、動いてはいけない範囲までずれます。上の数行は正しく動くため、気づくのが遅れます。表の最終行まで確認してください。
型が揃っていない
画面上は同じに見えても、数値と文字列は一致しません。=ISNUMBER(A2) で確認できます。システムから書き出したデータでは、これが原因のことが多くあります。
空欄と0を区別していない
未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから数式を書いてください。
範囲の行数が揃っていない
複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。
結果を検算していない
引数の順番が終了日・開始日です。逆に書くと符号が反転します。別の方法で同じ数字を出して、突き合わせてください。
数式が長くなりすぎている
入れ子が3段を超えると、書いた本人でも読めなくなります。作業列に分けてください。完成後に非表示にすれば見た目は変わりません。
書いたあとの確認
DAYSを新しく書いたら、次を順に確認してください。数分で終わります。
参照を固定したか
コピーする式は、固定漏れがないかを最初に確認してください。上の数行だけ見て判断しないでください。範囲のずれは下のほうで表面化します。
一番下の行まで正しいか
最終行までスクロールして、結果を確認してください。途中から値が変わっていないかを見ます。
別の方法で検算したか
同じ数字を別の関数でも出して、突き合わせてください。DAYSの結果だけを見ても、正しいかどうかは判断できません。
空欄とゼロを区別したか
未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。
エラーの扱いを決めたか
隠すのか、残すのか。用途に合っているかを確認してください。
他の人が読めるか
入れ子が3段を超えていないか。超えているなら、作業列に分けることを検討してください。
数式の読み解き方
他人の書いた数式を引き継ぐ場面は多くあります。読む順番を決めておくと、長い式でも追えます。
内側から読む
入れ子になった数式は、いちばん内側の括弧から評価されます。外側から読もうとすると、途中で分からなくなります。
引数の区切りで分ける
カンマで区切られた単位が引数です。括弧の対応を見ながら、どこまでが1つの引数かを確認してください。
一部だけを別セルで試す
長い数式の一部を切り出して、別のセルに貼って結果を見てください。どこまでが正しく動いているかが分かります。
この記事の例で確認する
=IF(DAYS(TODAY(),A2)>30,"期限超過","")
期限を過ぎた行に印を付ける形です。内側から順に、何が返っているかを確認してください。一度分解して読めば、似た形の数式はすべて読めるようになります。
分からない部分は残しておく
全部を理解してから触ろうとすると、いつまでも進みません。変える必要のある部分だけを特定して、そこだけ直してください。触っていない部分は、動いている限り放っておいて構いません。
実務で使う場面
DAYSが実際に必要になるのは、次のような場面です。自分の作業に当てはまるものがあれば、そこから読んでください。
集計表を作るとき
元データから数字を出す段階で使います。日数の差を出すのが典型的な形です。この段階で型を揃えておかないと、後の集計が全部ずれます。
他人に渡す表を整えるとき
見た目を整える段階です。桁や表記を揃えると、読み手が数字を比較できるようになります。渡す前に、意図しない値が混ざっていないかを確認してください。
元データを掃除するとき
システムから書き出したデータには、余分な空白や型のずれが混ざります。前処理は作業列にまとめてください。式の中に書き込むと読めなくなります。
定期的に更新する表を作るとき
同じ処理が毎月あるなら、日付を計算するで組んでおくと手作業が消えます。手作業を残すと、そこが毎回の負担になります。
数字が合わない原因を探すとき
検算に使えます。DAYSで出した値と、別の方法で出した値を突き合わせると、どこでずれているかが分かります。
DAYSについてよくある質問
Q. DAYSが使えません
その環境で対応していない可能性があります。#NAME? が出ている場合は、綴りの誤りか、環境が未対応かのどちらかです。
Q. 結果が0になります
参照先が空欄か、数値として認識されていない可能性があります。ISNUMBER で型を確認してください。
Q. 下にコピーすると結果が変わります
参照を固定していません。動いてはいけない部分に $ を付けてください。
Q. エラーを消したいのですが
=IFERROR(DAYS(...),"") で包めます。ただし原因を追っている段階では外してください。
Q. DAYSとDATEDIFはどちらを使うべきですか
やりたいことで決まります。出したい結果を一文で書いてから選んでください。
Q. Excelでも同じように使えますか
関数自体は使えますが、組み合わせる関数に差があります。共有先の環境を先に確認してください。
Q. 重くて開けません
列全体の指定をやめ、確定した期間は値に変換してください。この2つで大半が改善します。
Q. 引数を省略できますか
省略できる引数と、できない引数があります。省略すると既定の動作になり、意図と違う結果になることがあります。
Q. 計算結果を固定したいのですが
値として貼り付けてください。参照元を消しても壊れなくなります。
Q. 他の関数も見たいのですが
→ 全関数の一覧 から探せます。
この分野の他の記事
同じ「目的別」の記事です。目的が近いので、こちらで解決しない場合はこちらも見てください。