AIが書いた文書の数字と日付を、Excelで照合する。曜日のずれと合計の食い違いを式で見つける

2026-09-20AIの使い方

AIが書いた案内文や議事録で、直す価値があるのは3つに絞られる。数字、日付、固有名詞。文章の言い回しは読めば分かるが、この3つは読んでも気づけない。もっともらしく書かれているからだ。

このうち数字と日付は、Excelの式で機械的に当たれる。目で読むのは固有名詞と、言い切りの強さだけにする。

以下の式は、2026年9月20日にMicrosoft 365のExcel(バージョン16)で実際に計算させて確かめた。

曜日のずれは、1行の式で見つかる

「10月3日(金)」のような書き方は、AIの下書きでずれやすい。日付そのものは合っていても、曜日だけが違う。案内文で曜日が違うと、相手が別の日に来る。

本文の日付表記をA列に貼って、この式を入れる。年が書かれていないときは、B1に置いた既定の年を使う。

年:      =IFERROR(VALUE(LEFT(A3,FIND("年",A3)-1)),$B$1)
月:      =VALUE(MID(A3,IFERROR(FIND("年",A3)+1,1),FIND("月",A3)-IFERROR(FIND("年",A3)+1,1)))
日:      =VALUE(MID(A3,FIND("月",A3)+1,FIND("日",A3)-FIND("月",A3)-1))
実際の曜日: =IF(DAY(DATE(B3,C3,D3))<>D3,"存在しない日付",TEXT(DATE(B3,C3,D3),"aaa"))
本文の曜日: =IFERROR(MID(A3,FIND("(",A3)+1,1),"")
判定:     =IF(E3="存在しない日付","日付が存在しない",IF(F3=E3,"OK","ずれ"))

4つの表記で計算させた結果がこれだ。

本文の表記 実際の曜日 判定
2026年10月3日(金) ずれ
2026年2月29日(日) 日付が存在しない
2026年11月31日(火) 日付が存在しない
10月5日(月) OK

TEXTの第2引数に"aaa"を渡すと、曜日が「月」「火」の1文字で返る。"aaaa"なら「月曜日」になる。祝日の判定を足したいなら、祝日を判定する記事の一覧をそのまま使える。

存在しない日付が、そのまま通る

上の式には、最初に書いたときガードが入っていなかった。そのとき2026年2月29日(日)を入れたら、「OK」と出た。

理由はExcelのDATEの作りにある。存在しない日を渡すと、エラーにせず翌月に繰り上げる。DATE(2026,2,29)は2026年3月1日になり、その曜日は日曜なので、本文の「日」と一致してしまう。2026年は閏年ではないので、2月29日は存在しない。

だからDAY(DATE(...))<>D3という条件を足した。作った日付の「日」の部分が、渡した日と違っていたら繰り上がったということだ。これで2月29日も11月31日も弾ける。

AIの下書きで「2月30日」のような日付が出ることは、そう多くない。ただし月末の日付は間違えやすい。9月31日、6月31日、11月31日。31日まである月を取り違えると出る。式がエラーを出さない以上、ガードがないと静かに通る。

本文の金額を抜き出して突き合わせる

金額は、本文から抜き出して元データと比べる。1文の中の最初の数字を取り出す式がこれになる。

=IFERROR(VALUE(SUBSTITUTE(MID(A2,MIN(FIND({"0","1","2","3","4","5","6","7","8","9"},A2&"0123456789")),
  FIND("円",A2)-MIN(FIND({"0","1","2","3","4","5","6","7","8","9"},A2&"0123456789"))),",","")),"数字なし")

やっていることは3段階だ。最初に現れる数字の位置をFINDで探し、そこから「円」の直前までをMIDで切り出す。カンマをSUBSTITUTEで消して、VALUEで数値にする。A2&"0123456789"と末尾に数字を足しているのは、数字が1つもない文でもFINDがエラーにならないようにするためだ。

6つの文で試した結果がこれになる。

本文 抜き出し 元データ 判定
合計は12,400円です。 12,400 12,600 不一致
ご請求金額 1,980円(税込) 1,980 1,980 OK
先月比で3,500円の増加となりました。 3,500 3,500 OK
単価980円、数量は12個。 980 980 OK
本体9,800円と送料500円 9,800 9,800 OK
金額の記載なし 数字なし 数字なし

5行目に限界が出ている。1つの文に金額が2つあると、最初の9,800円しか拾わない。送料の500円は見ていない。こういう文は、金額ごとに行を分けて貼る。

助詞を手がかりにする書き方も試した。FIND("は",A2)+1から「円」までを切り出す形だ。「合計は12,400円です」では動いたが、ご請求金額 1,980円には「は」がないので壊れる。文の書き方に依存する式は使わないほうがいい。

全角で書かれていると拾えない

日本語の文書では、数字が全角で書かれていることがある。「合計は12,400円です。」のような形だ。この文に上の式をかけると、何も拾えなかった。

原因はFINDが半角の数字を探しているところにある。全角の「1」は別の文字なので見つからない。VALUE自体は全角を数値に変えられて、VALUE("12,400")は12,400を返した。詰まっているのは抜き出しのほうだ。

直し方は、文字列をASCに通してから式にかけることだ。ASCは全角の英数字と記号を半角に変える。「合計は12,400円です。」を通すと「合計は12,400円です」になり、そのあとは半角と同じように拾える。

=IFERROR(VALUE(SUBSTITUTE(SUBSTITUTE(ASC(A2),",",""),"円","")),"拾えない")

貼り付けた本文はまずASCに通す、と決めておけば、全角でも半角でも同じ式で通る。

合計は必ず検算する

明細を並べて合計を書く文書では、合計だけが合わないことがある。明細は正しく、足し算だけが違う。

私が試した例では、明細が4,200円、6,300円、2,100円で合計12,600円。本文には12,400円と書かれていた。差は200円だ。

明細の合計:  =SUM(B20:B22)
差額:       =B24-B25
判定:       =IF(B26=0,"OK","本文が"&TEXT(ABS(B26),"#,##0")&"円"&IF(B26>0,"少ない","多い"))

判定は「本文が200円少ない」と返った。金額を文字で出すと、どちらがどれだけずれているかが一目で分かる。パーセントの文書でも同じで、内訳の合計が100%になるかをSUMで見る。

式で拾えないもの

固有名詞は式では拾えない。会社名の表記ゆれ、担当者の名前、部署名。ここは目で読むしかない。ただし、よく出る固有名詞を一覧にしておけばCOUNTIFで「一覧にない書き方」を拾える。私は取引先の正式名称を1列に並べておいて、本文の会社名がそこにあるかだけ見ている。

敬称の重複も式では拾いにくい。「〇〇様各位」のような書き方は、AIの下書きで出る。これは目で読む。

存在しない出典も拾えない。実在しない通達番号やページ番号がもっともらしく書かれていることがある。出典が入っている文書は、リンクを1つずつ開く。開けないものは消す。

言い切りの強さも読んで直す。AIの下書きは「〜と考えられます」「〜する必要があります」と書きがちで、社内の案内文としては弱い。断定するか、条件を足すかを決める。

5分の確認の順番

私はこの順番で見ている。全部で5分ほどだ。

日付と曜日を式に通す。金額を抜き出して元データと突き合わせる。合計を検算する。ここまでが機械の仕事で、1分もかからない。

そのあと、固有名詞を目で追う。会社名、人名、部署名、商品名。最後に出典のリンクを開く。1つでも開けないものがあれば、その段落ごと疑う。

議事録の場合は、決定事項と提案の区別も見る。これは議事録をAIに書かせる記事に書いた確認の型がそのまま使える。

依頼の時点で減らす

確認の手間は、頼み方でも減る。数字を含む文書を頼むときは、元の数字を表で渡して「表にない数字は書かない」と付ける。計算を頼むなら、計算過程も出させる。過程が書いてあれば、検算が式1本で済む。

日付は、曜日を書かせない手もある。「10月3日」とだけ書かせて、曜日はこちらでExcelから入れる。ずれようがない。案内文で曜日が要るなら、この形がいちばん安全だ。

誤りの種類を数えておくと、どの依頼文を直すべきかが分かる。種類の分け方はチェックリストの作り方の記事の4分類が使える。同じ種類が3回出たら、依頼文を直す合図にしている。

文書確認日付曜日検算議事録