月初の朝、席に着いてすぐ課長から内線がありました。
「昨日もらった月別の納品予定、足すと125件なんだけど。発注は142件あるって言ってなかった?」
電話を切ってファイルを開きました。10月が48件、11月が41件、12月が36件。足すと、たしかに125件です。元の発注一覧は見出しを除いて142行あります。17件が、どの月にも数えられていませんでした。
正直、最初は数式を疑いました。次に範囲を疑い、フィルターのかけ忘れを疑い、原因にたどり着くまでに40分かかっています。数式はどこも間違っていませんでした。おかしかったのは「納期」の列のほうです。142個のセルのうち17個に、日付ではないものが入っていました。
- 「未定」が9件
- 「調整中」が3件
- 「11月上旬」が3件
- 「10/20頃」が2件
入力した人に落ち度があるとは思っていません。決まっていない納期を、決まっていないと正直に書いただけです。適当な日付を入れられるより、ずっと誠実です。ただ、Excelは日付の列に入った文字を「日付ではないもの」として黙って脇によけます。エラーも警告も出しません。だから40分かかりました。
この記事では小さな表を1つ用意して、文字の混ざった日付の列に4つの操作を順番に試します。何が起きるかを先に見てから、表の直し方と、二度と混ざらないようにする設定を書いていきます。
実験に使う9件の表
冒頭の発注一覧を9件に縮めたものです。1行目が見出し、2行目からがデータです。
| 行 | A列:発注No | B列:品名 | C列:納期 |
|---|---|---|---|
| 2 | H-1041 | 梱包材(大) | 2026/10/8 |
| 3 | H-1042 | ラベル用紙 | 未定 |
| 4 | H-1043 | 緩衝材 | 2026/10/21 |
| 5 | H-1044 | 結束バンド | 10/20頃 |
| 6 | H-1045 | 段ボール箱 | 2026/11/4 |
| 7 | H-1046 | 伝票用紙 | 11月上旬 |
| 8 | H-1047 | 封かんテープ | 〃 |
| 9 | H-1048 | 梱包材(小) | 2026/10/15 |
| 10 | H-1049 | PPバンド | 2026/11/12 |
C列の9件のうち、日付として入っているのは5件(2・4・6・9・10行目)で、残りの4件は文字です。
画面で見分けるときは、セルの中の寄り方を見ます。配置を手で変えていなければ、日付は右に寄り、文字は左に寄ります。「10/20頃」は日付に見えますが、「頃」の1文字が付いた時点で、Excelにとっては「未定」と同じただの文字です。
数で確かめるなら、空いているセルに次の2つを入れます。
=COUNT(C2:C10)
=COUNTA(C2:C10)
COUNTは数値(日付を含みます)の入ったセルだけを数え、COUNTAは何かが入っているセルを全部数えます。この表では5と9になります。差の4が、日付ではないセルの数です。
では、この表に4つの操作をしてみます。
操作1 納期の早い順に並べ替える
C列のどこかを選んで、「データ」タブの「昇順」を押します。
上から10/8、10/15、10/21、11/4、11/12と日付の5件が並び、その下に文字の4件がまとめて置かれます。Excelの昇順は「数値(日付)→文字→空白」の順に並べる決まりになっていて、文字に書いてある中身が早いか遅いかは見ていません。
困るのは「10/20頃」です。人が読めば10/21より前、上から3番目に来てほしい行ですが、実際には11/12よりも下に沈みます。「納期の近い順に上から片づけよう」と思って並べ替えた人の視界から、いちばん外れやすい位置です。
もっと取り返しがつかないのは8行目の「〃」です。もとは「上の行と同じ(11月上旬)」という意味でした。並べ替えたあとは、上の行が別の発注に変わっています。何と同じだったのかは、並べ替える前の状態に戻さない限りわかりません。
逆に「降順」を押すと、今度は文字の4件が日付より上に来ます。「未定」が、いちばん遅い納期のような顔をして先頭に並びます。
操作2 フィルターで10月だけに絞る
見出しにフィルターをかけて、C列の▼を開きます。
チェックリストには「2026年」の下に「10月」「11月」が折りたたまれて並びます。それとは別に、「10/20頃」「11月上旬」「未定」「〃」が、月に属さない単独の項目として並んでいます。
「10月」にチェックを入れてOKを押すと、出てくるのは10/8、10/15、10/21の3件です。「10/20頃」は10月の発注なのに出てきません。月とは別の項目として扱われているからです。
この表は日付のほうが多いので、まだましなほうです。文字のセルのほうが多い列になると、▼の中のメニューが「日付フィルター」から「テキストフィルター」に切り替わります。「今月」「来月」「指定の範囲内」といった、日付ならではの絞り込みが選べなくなります。
操作3 月ごとの件数を数える
冒頭の17件が消えたのは、この操作でした。
10月の件数を数える式です。
=COUNTIFS(C2:C10,">=2026/10/1",C2:C10,"<2026/11/1")
11月はこうなります。
=COUNTIFS(C2:C10,">=2026/11/1",C2:C10,"<2026/12/1")
結果は3と2。足して5です。表には9件あるので、4件がどの月にも入っていません。
Excelの日付は、中身が連番の数値です。2026/10/1は「46296」という数で、表示形式が日付の姿に見せているだけです。”>=2026/10/1″ という条件は「46296以上の数値かどうか」という比較なので、文字のセルは大きい小さい以前に、比べる相手として扱われません。「未定」も「10/20頃」も、条件に合わなかったのではなく、最初から土俵に上がっていないのです。
SUMIFSで「10月納期の金額合計」を出す場合も、同じ理由で金額が抜けます。件数が合わないときにどこから見ていくかは、複数条件の件数がズレるときの確認順に書いています。

ピボットテーブルでも似たことが起きます。納期を行に置いて「グループ化」で月単位にまとめようとすると、「選択対象をグループ化できません。」と表示されて止まります。列の中に文字が1つでもあると、月や四半期でまとめる機能が使えません。こちらはメッセージが出るぶん、まだ親切です。
操作4 納期までの残り日数を出す
D2に次の式を入れて、下までコピーします。
=C2-TODAY()
日付の5行には残り日数が出ます。文字の4行は #VALUE! になります。文字から日付は引けないからです。
これは目に見えるエラーなので、気づくことはできます。問題はそのあとです。いちばん近い納期まであと何日かを =MIN(D2:D10) で出そうとすると、範囲にエラーが1つでもあれば、結果も #VALUE! になります。
ここで、IFERRORで包んでエラーを消したくなります。
=IFERROR(C2-TODAY(),"")
表はきれいになります。けれど未定の4件は空欄になり、存在ごと見えなくなります。「エラーが出なくなった」と「問題がなくなった」は別の話です。IFERRORを入れる前に知っておきたいことは、IFERROR関数の使い方の記事にまとめています。

4つの操作を並べてみる
| 操作 | 日付の5件 | 文字の4件 | Excelからの知らせ |
|---|---|---|---|
| 並べ替え(昇順) | 早い順に並ぶ | 日付の下にまとめて沈む | なし |
| フィルター | 年・月でまとめて選べる | 月とは別の項目になる | なし |
| 月別の件数 | 数えられる | どの月にも入らない | なし |
| 残り日数の計算 | 計算できる | #VALUE! になる | エラー表示 |
4つのうち3つは、Excelが何も言いません。文字の混ざった日付の列が厄介なのはここです。間違った結果が、間違っていないような顔で出てきます。
日付の列に文字を書きたくなる5つの事情
直す前に、なぜ文字が書かれたのかを見ておきます。これまで見てきた表を振り返ると、理由はだいたい次の5つに収まります。
- まだ決まっていない(未定、調整中、確認中)
- だいたいしか決まっていない(11月上旬、10/20頃、月末)
- 幅がある(10/20〜10/22)
- 上の行と同じ(〃、同上)
- 日付以外の状態を伝えたい(済、キャンセル、先方回答待ち)
どれも伝える価値のある情報です。悪いのは情報ではなく、置き場所が「納期」の列しかないことです。列が足りないので、1つの列に「いつ」と「どういう状況か」の2種類が同居してしまいます。
1つの列に役割が2つ入るという点では、「備考」列が途中から別の用途に変わっていた表と根が同じです。数値の列に文字が混ざるケースは、列の中でデータの形式が混ざっているときの記事で扱っています。


直し方:日付の列には日付だけ、言いたいことは隣の列へ
列を3本にします。「納期」には日付だけを入れ、「確度」に確定・仮・未定のどれかを入れ、残りは「メモ」に書きます。
| もとの書き方 | 納期 | 確度 | メモ |
|---|---|---|---|
| 2026/10/8 | 2026/10/8 | 確定 | |
| 未定 | (空欄) | 未定 | |
| 調整中 | (空欄) | 未定 | 先方と調整中 |
| 10/20頃 | 2026/10/20 | 仮 | |
| 11月上旬 | 2026/11/10 | 仮 | 上旬の見込み |
| 10/20〜10/22 | 2026/10/22 | 仮 | 10/20〜22の間 |
| 〃 | 上の行と同じ日付 | 上の行と同じ | |
| 済 | 実際に納品された日 | 確定 | 納品済み |
迷うのは「上旬」のような書き方です。私は、上旬は10日、中旬は20日、下旬は月末と決めています。納品を待つ側の表なので、遅いほうに寄せています。遅めに見積もっておけば、実際に早く届いても困らないからです。自分が納める側の締切を管理する表なら、逆に早いほうへ寄せたほうが安全です。
どちらに寄せるかは1回決めたら、表の外に書いておきます。表の途中に注意書きの行を挟むと、今度はそれが集計の邪魔をします。理由は表の途中にメモを書いたときに起きることに書きました。

幅のある納期は、開始日と終了日の2列に分ける方法もあります。集計で使うのがどちらか一方に決まっているなら、上の表のように1列とメモで十分です。
「空欄にすると、入力漏れと区別がつかないのでは」とよく言われます。そのための「確度」の列です。納期が空欄で確度が「未定」なら、わざと空けてあります。納期も確度も空欄なら、入力漏れです。
すでに混ざっている表を直す手順
冒頭の142行の表で、実際にやった手順です。
1. もとの列は残したまま、右に列を足す
C列の右に3列挿入して、D列を「納期」、E列を「確度」、F列を「メモ」にします。C列の見出しは「納期(元)」に変えておきます。検算が終わるまで、C列は消しません。
2. D列に日付だけを残す
C2からC143をコピーして、D2に「値」で貼り付けます。D列の貼り付けた範囲を選んだまま、「ホーム」タブの「検索と選択」→「条件を選択してジャンプ」を開きます。「定数」を選び、「数値」「論理値」「エラー値」のチェックを外して「文字」だけにしてOKを押します。
文字の入ったセルだけが選ばれます。画面右下のステータスバーに「データの個数:17」と出ていれば、冒頭の17件と一致です。そのままDeleteキーを押すと、D列には日付だけが残ります。
3. F列に文字だけを残す
同じことを逆向きにやります。C2からC143をF2に値で貼り付け、「条件を選択してジャンプ」で今度は「数値」だけにチェックを入れてOK、Deleteキー。F列には「未定」「10/20頃」などの文字だけが残ります。
4. 「〃」を先に片づける
この時点では、表はまだもとの順番のままです。F列で「〃」や「同上」を探し、上の行と同じ日付と確度を入れていきます。並べ替えは、これが終わるまでしません。すでに並べ替えてしまった表は、発注Noや入力日など、もとの順に戻せる列があればそれで戻してから作業します。
5. 文字の行に、確度と仮の日付を入れる
F列が空欄でない行だけをフィルターで出して、さきほどの表のとおりにD列とE列を埋めます。「未定」「調整中」はD列を空欄のままにします。日付だけの行は、E列に「確定」と入れます。
6. 検算する
=COUNT(D2:D143)
=COUNTIFS(E2:E143,"未定")
この2つを足して行数と同じになれば、全部の行が「日付が入っている」か「未定と明記されている」かのどちらかになっています。私の表では130と12で、足して142でした。一致を確認してから、C列を削除します。
142行で、ここまで20分ほどです。原因探しに使った40分の半分でした。
ひとつ注意があります。手順2でDeleteしたセルの中に、「2026.10.8」のように見た目は日付らしいものが混ざっていることがあります。これは今回の話とは別で、日付のつもりで入力したものがExcelに日付と認識されていない状態です。直し方は日付が文字列になっているときの見分け方のほうにあります。

文字を入れられないようにする設定
直した表が来月また元に戻っていたら意味がないので、D列に「データの入力規則」をかけておきます。
- D列の入力範囲を選ぶ
- 「データ」タブ→「データの入力規則」を開く
- 「入力値の種類」を「日付」、「データ」を「次の値以上」、「開始日」を 2020/1/1 にする
- 「エラーメッセージ」タブで、タイトルに「日付だけ入力できます」、メッセージに「未定のときは空欄のまま、右の確度の列で『未定』を選んでください」と書く
- OKを押す
これで「未定」と打つと、メッセージが出て入力できなくなります。メッセージには「では、どうすればいいのか」まで書くのがコツです。禁止するだけだと、困った人はコメントや隣のセルなど、別の逃げ道を探します。
E列の「確度」は、「入力値の種類」を「リスト」にして、「元の値」に 確定,仮,未定 と入れます。プルダウンから選ぶ形になるので、「未定」「みてい」「未確定」のような表記の揺れも防げます。
入力規則には穴が2つあります。
- 設定する前から入っていた文字は、そのまま残ります。「データの入力規則」の▼から「無効データのマーク」を選ぶと、規則に合わないセルに赤い丸が付きます
- ほかの場所からコピーしたセルを貼り付けると、入力規則ごと上書きされます。貼り付けで更新することが多い表は、月に1回、D列のCOUNTとCOUNTAを見比べてください
それでも画面には「未定」と出したいとき
報告用の表や印刷物では、空欄より「未定」と書いてあるほうが親切です。その場合は、見せるためだけの列を数式で作ります。
G2に入れる式です。
=IF(D2="","未定",TEXT(D2,"m/d")&IF(E2="仮","頃",""))
納期が確定していれば「10/8」、仮なら「10/20頃」、空欄なら「未定」と表示されます。見た目は、もとの書き方とほとんど変わりません。違うのは、この列は見せるためだけにあって、並べ替えもフィルターも集計も、すべてD列でやるという点です。IFの組み立て方に不安があれば、IF関数の基本の書き方を先に見てください。

残り日数は、次のようにしておけば未定の行は空欄になり、MINもそのまま使えます。
=IF(D2="","",D2-TODAY())
月別の件数は、D列を数えたうえで、最後に1行足します。
=COUNTIFS(E2:E143,"未定")
直した表で、もう一度報告した
| 月 | 直す前 | 直した後 |
|---|---|---|
| 10月 | 48件 | 50件 |
| 11月 | 41件 | 44件 |
| 12月 | 36件 | 36件 |
| 未定 | (行なし) | 12件 |
| 合計 | 125件 | 142件 |
課長が反応したのは、合計が合ったことではありませんでした。
「未定が12件もあるの。そっちを先に詰めないとまずいな」
文字のまま列に埋もれていた間、「未定」は誰にも数えられていませんでした。列を分けて、初めて12という数字になり、追いかける仕事になりました。日付の列から文字を追い出すのは、集計を合わせるためだけの作業ではなかったわけです。決まっていないものを、決まっていないと見える形にする作業でもありました。
よく聞かれること
ダミーの日付(9999/12/31など)を入れておくのはだめですか
並べ替えでは端に寄ってくれるので、一見便利です。ただ、残り日数は290万日を超える数字になり、MAXで「いちばん遅い納期」を出すと9999年が返ってきます。平均を取れば、それも壊れます。何より、事情を知らない人には本物の日付に見えます。引き継いだ人が悩むことになるので、私は使いません。
共有ファイルで、ほかの人が文字を入れてしまいます
入力規則をかけたうえで、見出しを「納期(日付のみ)」に変えるのが手軽です。それでも入るようなら、たいてい「書きたいことを書く列がない」状態です。メモの列があるか、見出しでその存在が伝わっているかを見直します。
列を2本も増やすほどの表ではないのですが
メモの列1本でも構いません。守りたいのは「日付の列には日付しか入っていない」ことだけです。未定の行は納期を空欄にして、メモに「未定」と書きます。件数は =COUNTIFS(メモの列,"未定") で数えられます。
まず、手元の表で数えてみる
いま使っている表の日付の列に、COUNTとCOUNTAを当ててみてください。2つの数字が同じなら、その列は大丈夫です。違っていたら、その差の件数だけ、並べ替えからもフィルターからも集計からも外れている行があります。
日付の列のほかにも、空白行や小計の行、2行の見出しなどが同じ表に重なっていることは珍しくありません。人から受け取った表のどこを、どの順番で見て直していくかは、もう一歩踏み込みたい方向けに受け取った表を集計前に点検する「表の健康診断」12項目(note)にまとめています。

コメント