入金消込やマスタ照合でVLOOKUPを書いたのに、#N/Aが数えて30行出ることがあります。数式そのものは正しい。原因は元データの見た目が違うことです。片方は全角、片方は半角。片方だけ末尾に空白があり、もう片方には改行や不可視文字が付いている。数値に見えて文字列で入っている場合もあります。この掃除を手でやると夜が終わるので、AIに任せます。ただし任せるのは「原因の分類と掃除の式の提案」までです。一括置換の実行と式の確定は、人の目でやります。
全体の型: 掃除の分類はAI、置換の実行は別シートで人間
AIに任せるのは、2つのリストを見比べて「なぜ一致しないか」を類型化し、対策の式を提案するところまでです。元データへの直接処理は避けます。
- 任せる: 一致しない原因の分類、変換候補(TRIM・SUBSTITUTE・TEXT・VALUE)の提案、変換サンプルの作成
- 残す: 置換の実行(必ず別シート)、変換後の照合式の確定、先頭ゼロが消えるコードの扱い
手順1: 照合対象の列だけを貼る
照合したい列(例: 社員番号や請求書番号)を2つのリストから数行ずつコピーして貼り付けます。列全体でも構いませんが、まず10行程度で原因の見当を付けます。
| 請求側のID | 入金側のID |
|---|---|
| 10025 | 10025 |
| "10231 " | 10231 |
| 10402 | 10402 |
手順2: 依頼文を貼る
以下はExcelで突合する2つのリストのID列です。VLOOKUPで#N/Aが大量に出ています。
2つの列を見比べて、一致しない原因を類型ごとに分類してください。
類型は「全角/半角」「前後の空白」「不可視文字(改行・タブ)」「数値と文字列の型違い」の4種を想定しています。
各IDに対して原因の候補と、対応する変換式(TRIM、SUBSTITUTE、TEXT、VALUEなど)を表形式で提案してください。
式の提案は別シートで処理する前提で書いてください。元データへの直接置換の提案はしないでください。
先頭ゼロを含む番号は、VALUEで変換するとゼロが消えるためTEXTで先に固定してください。
変換後の文字数や行数が変わる場合も指摘してください。
請求側ID列:
(ここにコピーして貼り付けます)
入金側ID列:
(ここにコピーして貼り付けます)
手順3: 返ってくる分類表の形
| ID | 原因 | 変換例 | 提案式 |
|---|---|---|---|
| 10025 | 全角 | 半角へ統一 | =SUBSTITUTE系+ASC |
| "10231 "(末尾空白) | 前後の空白 | トリム | =TRIM(A2) |
| 10402 | 型違い(片方が文字列) | 型の固定 | =TEXT(A2,"00000") |
不可視文字(CHAR(10)やCHAR(32)以外)が疑われるIDには、確認用の式が並びます。
やって起きた失敗: 先頭ゼロが消えた社員番号
提案に従って数値変換を一気に通した月がありました。件数は合うのに、翌日の照合でまたズレが出ました。原因は先頭ゼロ。社員番号が6桁に縮んで、別コードとして残っていました。この失敗から、変換は必ず別シート(元データの保全コピー)で行い、先頭ゼロを含むコードはTEXTで先に型を固定してから掃除する手順に固定しています。AIの提案は正しいことも多いですが、番号体系の意味(先頭ゼロが意味を持つか)は現場だけが知っています。
検算の4点
- 保全。元データには触らない。必ず別シートにコピーを作ってから変換します。掃除で行数が減ったら即中止
- 先頭ゼロ。VALUE変換でゼロが消えるコードは、TEXT関数で先に文字列として固定してから掃除します
- サンプル照合。変換後、任意の10件を手で突き合わせて#N/Aが消えているか見ます。全件は最後にやる
- 件数一致。掃除前後でリストの行数が一致することを確かめます。行数が変わる変換は不採用
まとめ
- #N/Aの大量発生は数式の失敗ではなく元データの見た目の失敗。原因は4類型(全角/半角、前後空白、不可視文字、型違い)でほぼ説明がつく
- AIに任せるのは分類と掃除の式の提案まで。置換の実行は別シートで行い、行数が増減する変換は不採用にする
- 先頭ゼロを含む番号はTEXTで先に固定。数字の「意味」を知らないAIに、番号体系の判断は任せない
この連載では、Excelしか開けない現場で、生成AIに何を任せて何を残すかを、経理・事務の作業ごとに書いていきます。プロンプトは毎回コピーして使える形で載せます。書籍2冊(vol.1/vol.2)はKindle Unlimited(読み放題)で読めます(vol.1)。テンプレート集はyoshito.yuenreach.comにまとめています。