月次の集計をしていて、同じ取引先が2行に分かれていたことがあります。片方は「〇〇商事(株)」、もう片方は「〇〇商事株式会社」。金額を足すと合っているのに、ピボットテーブルにすると別の会社として並ぶ。原因は分かっているのに、200行のリストを目で追って直していく作業が毎月発生していました。
いわゆる表記ゆれです。全角と半角、スペースの有無、「(株)」と「株式会社」、支店名の付け方。入力する人が違えば必ず起きるもので、関数だけでは最後まで片づきません。ここ半年ほど、この後半部分をAIに任せるようになりました。ただしAIにデータそのものを直させるのはやめました。この記事では、その理由と、実際に使っている手順・プロンプトをそのまま書きます。
表記ゆれは「関数で片づくもの」と「片づかないもの」に分かれる
最初にここを分けておかないと、AIに丸投げして事故ります。私は次のように線を引いています。
① 関数で片づくもの(AIは不要)
- 全角と半角の混在 …
ASC(半角化)/JIS(全角化) - 前後や途中の余計なスペース …
TRIM - セル内に混ざった改行や制御文字 …
CLEAN - アルファベットの大文字小文字 …
UPPER/LOWER - 決まった文字の置き換え …
SUBSTITUTE
この5つを重ねるだけで、体感では表記ゆれの半分くらいは消えます。まずはこれを1本の式にして当ててしまうのが早いです。
=TRIM(ASC(CLEAN(A2)))
ここで大事なのは、この段階のものをAIに投げないことです。機械的に決まる変換をAIに頼むと、遅いうえに、ときどき余計なことをします。ルールが決まっているものは関数の仕事です。
② 関数では片づかないもの(ここがAIの出番)
- 「(株)〇〇」と「株式会社〇〇」と「〇〇」 … 法人格の書き方のゆれ
- 「福岡支店」と「福岡支社」と「福岡営業所」 … 呼び方のゆれ
- 「エービーシー物産」と「ABC物産」 … カナと英字のゆれ
- 「山崎」と「山﨑」 … 旧字・異体字
- 「〇〇センター」と「〇〇センター」の後ろに付いた部署名の有無
これらは「同じものと見なしてよいか」の判断が必要です。置換ルールを人が全部書き出せるなら関数で済みますが、200件の取引先リストからゆれの組み合わせを洗い出す作業そのものが重い。この「洗い出し」だけをAIにやらせる、というのが今の私のやり方です。

AIに「直させない」で「変換表を作らせる」
最初のころは、リストをまるごと貼って「表記ゆれを統一して」と頼んでいました。きれいな一覧が返ってきて、これは楽だと思ったのですが、しばらくして手を止めました。理由は3つです。
- どこを直したのか分からない。返ってきたのは完成品なので、元と突き合わせないと変更点が見えません
- 件数が合わないことがある。行が減っていたり、順番が入れ替わっていたりします
- 間違いに気づけない。もっともらしく統一されていると、そのまま信じてしまいます
そこで、AIには変換表(元の表記 → 統一後の表記)だけを作らせることにしました。データ本体には触らせません。表を人間が確認してから、Excel側で一括変換します。手順にすると次の5つです。
手順① 重複を除いたユニークな一覧を作る
いきなり全データを渡す必要はありません。取引先名の列だけ取り出し、重複を除きます。1,000行のデータでも、取引先名の種類は150件程度、ということはよくあります。
=SORT(UNIQUE(TRIM(ASC(A2:A1001))))
UNIQUEが使えない環境なら、ピボットテーブルの行フィールドに置くか、[データ]→[重複の削除]でも同じことができます。件数も一緒に出しておくと、あとの検算に使えます。
手順② AIにグループ分けと変換表を作らせる
実際に投げているプロンプトがこれです。ポイントは「勝手に直すな」「根拠を書け」「迷ったら分けておけ」の3点を明示することです。
以下は、ある会社の取引先名の一覧です(重複は除いてあります)。 同じ取引先を指していると思われるものをグループにまとめ、変換表を作ってください。 【出力形式】 元の表記 / 統一後の表記 / 同じと判断した理由 / 確信度(高・中・低) の4列のタブ区切りで出力してください。 【条件】 ・データそのものは書き換えないでください。変換表だけを出してください ・入力された表記は1件も省略せず、すべて表に含めてください ・別の会社である可能性が少しでもあるものは、統一せず確信度「低」にしてください ・法人格(株式会社・(株))の位置や有無だけの違いは、確信度「高」で統一して構いません ・支店名・営業所名が付いているものは、原則として別グループのままにしてください 【一覧】 (ここに貼り付け)
「1件も省略せず」を入れているのは、長いリストだと途中を勝手に端折られることがあるためです。確信度を書かせているのは、次の手順で人が見る順番を決めるためです。
手順③ 変換表を人が確認する(ここが本番)
出てきた表をExcelに貼り、確信度「低」と「中」の行だけを先に見ます。ここが実質的な作業のすべてで、AIに任せられない部分です。私は次の3つを疑いながら見ています。
- 別法人ではないか。名前が似ているだけの会社は実在します
- 本店と支店を混ぜていないか。請求元が分かれているなら、集計上も分けるべきです
- 統一後の表記は、社内の正式名称と一致しているか。AIは多数決で決めるので、社内の正式名称ではなく「よく出てくる方」に寄せることがあります
確信度「高」の行も、全部は見ないまでも斜めには通します。ここまでで、200件なら15分ほどです。目視で全件直していた頃と比べると、それでも作業は大きく減りました。

手順④ Excel側で一括変換する
確認済みの変換表ができたら、あとはExcelの仕事です。元データの隣に列を作り、変換表を引きます。
=XLOOKUP(TRIM(ASC(A2)), 変換表!$A:$A, 変換表!$B:$B, A2)
最後の引数にA2(元の値)を入れているのが要点です。変換表に載っていなかったものは、元の値のまま残すという意味になります。ここを空欄やエラーにすると、取りこぼしがそのまま消えてしまいます。XLOOKUPがない環境ではIFERRORとVLOOKUPの組み合わせで同じことができます。
手順⑤ 検算する
ここを飛ばすと、何のために変換表方式にしたのか分かりません。最低限、次の2つは毎回見ます。
- 行数と合計金額が変換の前後で一致しているか。名寄せは行を減らす作業ではないので、1行でも減っていたらどこかがおかしい
- 統一後のユニーク件数が、想定どおり減っているか。150件が148件にしか減っていないなら、変換表が効いていません
=COUNTA(B2:B1001) ← 変換後の行数 =SUMPRODUCT(1/COUNTIF(B2:B1001,B2:B1001)) ← 変換後のユニーク件数
この検算が通って初めて、集計に使います。
失敗した3つ
やり方が固まるまでに、いくつか痛い目を見ました。同じところで転ばないように書いておきます。
① 別の会社をひとつにまとめられた
名前の前半が同じで、後半が違う2社を、AIが「表記ゆれ」として統一してしまったことがあります。人間なら「これは別会社では」と引っかかるところですが、AIは文字列としての近さで判断します。プロンプトに「別の会社である可能性が少しでもあるものは統一しない」を入れるようになったのは、この一件からです。
② 統一後の名前が社内の正式名称と違っていた
データの中で多かった表記に寄せられた結果、社内の台帳の名称と食い違いました。集計はきれいになったのに、台帳と突き合わせられないという本末転倒です。今は正式名称のリストがある場合はそれも一緒に渡し、「統一後の表記は必ずこのリストの中から選ぶこと」と指定しています。
③ 長いリストを一度に貼って、途中で切れた
300件ほどを一度に貼ったら、後半が出力されずに終わっていました。しかも「以下同様です」といった断りもなく、自然に終わっているように見えるのが厄介です。今は50〜100件ずつに分けて渡し、最後に「入力は何件、出力は何件」を必ず数えさせるようにしています。プロンプトの末尾に1行足すだけです。
出力の最後に、入力された件数と、変換表に含めた件数を書いてください。 一致しない場合は、その旨を明記してください。
貼る前に、総務として確認していること
取引先名や氏名の一覧は、社名リストという意味では地味に見えて、取引の事実そのものです。個人事業主が相手なら氏名は個人情報にもあたります。外部のAIサービスに貼る前に、私は次を確認しています。
- 会社として認めているサービスか。個人アカウントで業務データを扱っていないか
- 入力内容が学習に使われない設定になっているか。法人向けプランと個人向けで扱いが違うことがあります
- そもそも社内にルールがあるか。ルールがなければ、判断が担当者ごとにばらつきます。この点は「生成AIの社内利用ルール・ガイドラインの作り方」に書きました
判断が付かないときの逃げ道もあります。実名を渡さず、ゆれの「型」だけを相談する方法です。「A社」「A社(株)」「A社株式会社」のようなダミーで手順とプロンプトだけ固めておき、実データには社内で当てる。遠回りに見えますが、変換表方式ならこれで十分機能します。
正直なところ、AIを使わない方がいい場面
毎月まったく同じ形のデータを扱っていて、ゆれのパターンも決まっているなら、AIは要りません。一度作った変換表を使い回すか、Power Queryで置換の手順を保存しておく方が、速いうえに結果が毎回同じになります。
AIが効くのは、初めて見るデータのゆれを洗い出すときと、ゆれの種類が多すぎて人手で書き出す気になれないときです。逆に言えば、2回目からは自分の変換表が資産になります。私は変換表を1枚のシートに残して、毎月そこに追記しています。
表記ゆれを、そもそも起こさないために
直す話ばかり書きましたが、本筋は入口です。入力欄が自由入力である限り、ゆれは必ず復活します。効いたのは次の2つでした。
- 入力規則のリストにする。[データ]→[データの入力規則]→[リスト]で、マスタから選ばせる形にします
- コードで持つ。取引先コードや店舗コードを主にして、名称は表示用と割り切る。名前が変わってもコードは変わりません
現場に「正しく入力してください」とお願いするより、選ぶしかない形にしてしまう方が結果的に早い、というのが正直な実感です。
よくある質問
Q. Excelに入っているAI機能を使えば済むのでは?
環境が整っているならそれが早い場面もあります。ただ、どのバージョン・どのプランで何が使えるかは変わりますし、会社のPCで自由に使えるとは限りません。ここで書いた「変換表を作らせて人が確認する」という考え方は、どのAIを使っても、あるいは今後ツールが変わっても効きます。
Q. Power Queryとの使い分けは?
ゆれのルールが決まっているならPower Query、ルールを見つけるところからならAI、と分けています。AIで作った変換表をPower Queryのマージで当てる、という組み合わせが実務では一番安定しました。
Q. どのくらいの件数まで一度に渡せますか?
私は50〜100件を目安にしています。技術的にはもっと入りますが、増やすほど省略される確率が上がり、確認の手間も増えます。分けて渡した方が結局は速いです。
Q. 住所や電話番号のゆれにも使えますか?
使えますが、慎重にした方がよい領域です。「1-2-3」と「一丁目2番3号」のような変換は、AIが間違えても一見それらしく見えます。郵便番号など、機械的に突き合わせられる材料がある場合はそちらを優先してください。
どの作業から手を付けるべきか、23項目で判定できます
毎月やっている作業を選ぶだけで、仕組みにできるものと手作業のまま残るものを判定するツールを置いています。判定の4つの軸もそのまま表示するので、納得できなければ読み替えてもらって構いません。入力した内容はブラウザの中だけで処理され、どこにも送信されません。
まとめ
- 表記ゆれは「関数で片づくもの」と「判断が要るもの」に分かれる。前者は
TRIM・ASC・CLEANで先に潰す - AIにはデータを直させず、変換表(元の表記→統一後の表記)だけを作らせる
- プロンプトには「省略しない」「迷ったら統一しない」「確信度を書く」を必ず入れる
- 人が見るのは確信度が低い行から。別法人・本支店・正式名称との一致を疑う
XLOOKUPの最後の引数を元の値にして、変換表にないものを消さない- 変換の前後で行数と合計金額が一致するかを毎回検算する
- 取引先名・氏名を外部AIに貼る前に、サービスの扱いと社内ルールを確認する
- 入力規則やコード管理で、そもそもゆれない形にするのが本筋
この方法にしてから、「AIに直してもらった」という感覚がなくなりました。やっていることは、洗い出しだけ手伝ってもらって、判断は自分でするという分担です。地味ですが、数字を扱う仕事ではこれくらいが安心して使える距離感だと思っています。
お知らせ:プロンプト集をnoteで公開しました
この記事で紹介したような聞き方の型を含め、総務・経理の実務でそのまま使える穴埋め式プロンプト30本(集計チェック・文書作成・議事録・メール・報告資料・人事労務)を1冊のnoteにまとめました(有料500円・返金申請受付あり)。冒頭+2本は無料で読めます。
【コピペで使える】総務・経理のためのAIプロンプト集30(穴埋め式)|note


コメント