Googleスプレッドシートで営業リストの消し込みを自動化|AI関数×標準関数で表記ゆれも解決 – ファネルAi
イベント お役立ち お知らせ
詳しく知る デモを予約

Googleスプレッドシートで営業リストの消し込みを自動化|AI関数×標準関数で表記ゆれも解決

営業リストの消し込み作業で「表記ゆれ」と「既存顧客との重複チェック」に時間を取られていませんか? 本記事では、GoogleスプレッドシートのAI関数と標準関数を組み合わせた自動化手法を解説します。設計方針は「AIは2割、標準関数で8割」。まず会社名を正規化キーに変換し、完全一致で大半の重複を検出。完全一致で判定できない曖昧なケースだけをAI関数に渡すことで、上限やブレの問題を回避します。シート構造をテンプレ化すれば、担当者が変わっても仕組みとして回り続けます。

営業リストの精査って、地味に時間がかかりますよね。とくに「既存顧客との重複チェック」と「会社名の表記ゆれ対応」は、手作業でやると本当に骨が折れます。

「株式会社」と「(株)」、全角スペースと半角スペース、支店名の有無……こうした細かな違いで単純な一致検索が効かず、結局は目視で確認する羽目になった経験はないでしょうか。

この記事では、GoogleスプレッドシートのAI関数(=AI)と標準関数を組み合わせて、営業リストの消し込み作業を「再現性高く」「運用しやすく」自動化する方法を解説します。ChatGPTやCopilotにExcelファイルを丸投げする方法もありますが、今回紹介するやり方なら、担当者が変わっても仕組みとして回り続けます。

AI関数の「できること」と「できないこと」を押さえる

GoogleスプレッドシートのAI関数は、セルに「=AI(“プロンプト”, 参照セル)」と入力するだけで、Gemini(GoogleのAI)を呼び出せる便利な機能です。文章の要約や翻訳、分類といった作業を関数一発でこなせます。

ただし、万能ではありません。AI関数には以下のような制約があります。

返り値がテキストのみという点がまず重要です。数値を返したいときは、別途VALUE関数などで変換する必要があります。また、AI関数は渡されたセル範囲しか参照できず、シート全体やGoogleドライブの別ファイルを勝手に探索してくれるわけではありません。さらに、IF関数の中にAI関数を入れるといったネスト(入れ子)もできません。

加えて、一括生成できるセル数には上限があります。公式には200〜350セル程度とされていますが、環境や時期によって変動する可能性があるため、運用では少なめに見積もっておくのが無難です。

設計の基本方針:「AIは2割、標準関数で8割」

AI関数の制約を踏まえると、「全部AIにやらせよう」という発想はあまり得策ではありません。むしろ、標準関数で処理できる部分は標準関数に任せ、AIは「曖昧な判断が必要な場面」だけに投入するのが合理的です。

具体的には、次のような役割分担を想定します。

まず、会社名の表記ゆれを吸収するための「正規化処理」は、標準関数で行います。(株)を「株式会社」に統一したり、スペースや記号を除去したりといった処理は、REGEXREPLACE関数などで高速かつ確実に実行できます。

次に、正規化した会社名(キー)同士の完全一致で、重複を検出します。この段階で大半の消し込みが終わるはずです。

最後に、完全一致では判定できなかった「怪しい行」だけを抽出し、AI関数で一致・不一致を判定します。AIに渡す件数を絞ることで、上限にも引っかかりにくくなりますし、ブレも最小限に抑えられます。

シート構成はシンプルに2枚で十分

このやり方を実装するにあたって、シートは2枚用意します。

シート①:Prospects(営業候補リスト)

営業対象となる会社の一覧です。元の会社名(company_raw)のほか、正規化後のキー(company_key)、完全一致の判定結果(dup_exact)、AI判定用の候補社名(candidate_name)、AI判定結果(dup_ai)、そして最終的な除外フラグ(exclude)といった列を設けます。

シート②:Customers(既存顧客リスト)

すでに取引のある顧客の一覧です。こちらにも元の会社名と正規化キーの列を作ります。

Step1:会社名を「比較用キー」に正規化する

表記ゆれを吸収するために、会社名を「比較しやすい形」に変換します。ポイントは、「比較の邪魔になる要素を落とす」という考え方です。

たとえば、以下のような処理を行います。

「(株)」「(株)」「㈱」といった略称を「株式会社」に統一します。同様に、有限会社系の表記も統一します。全角・半角スペースは削除し、ハイフンや中点、カンマなどの記号も除去します。必要に応じて、「本社」「支店」「営業所」といった末尾の拠点名も取り除きます。

Googleスプレッドシートでは、LET関数とREGEXREPLACE関数を組み合わせることで、こうした処理を1つの数式にまとめられます。

=LET(
  s, company_raw,
  t, LOWER(s),
  u, REGEXREPLACE(t, "(株)|\(株\)|㈱", "株式会社"),
  v, REGEXREPLACE(u, "(有)|\(有\)|㈲", "有限会社"),
  w, REGEXREPLACE(v, " | ", ""),
  x, REGEXREPLACE(w, "[-‐-‒–—―・,,.。.。//]", ""),
  y, REGEXREPLACE(x, "(株式会社|有限会社)", ""),
  z, REGEXREPLACE(y, "(本社|支店|営業所|工場)$", ""),
  z
)

法人格(株式会社・有限会社)を残すか外すかは、運用によって判断してください。グループ会社を識別する必要があるなら残したほうがいいですし、そうでなければ外してしまったほうが一致しやすくなります。

Step2:完全一致で「即除外」を判定する

正規化キーを作ったら、まずは完全一致でチェックします。ProspectsシートのキーがCustomersシートのキー一覧に含まれていれば、それは既存顧客と重複しているということです。

=COUNTIF(Customers!company_key, company_key)>0

この式で「TRUE」が返ってきた行は、ほぼ確実に除外対象です。exclude列には、この時点で「X」を入れてしまいます。

=IF(dup_exact, "X", "")

正直なところ、このステップだけで消し込み作業の大部分は終わります。表記ゆれさえ吸収できていれば、完全一致でかなりの精度が出るからです。

Step3:曖昧なケースだけAI関数で判定する

完全一致では判定できなかったものの、「なんとなく同じ会社っぽい」というケースが残ることがあります。たとえば、正規化しても微妙に文字列が違う場合や、社名の一部だけが一致している場合などです。

こうした曖昧なケースに対しては、AI関数を使って判定します。ただし、先述のとおりAI関数はシート全体を勝手に探索できないので、候補となる既存顧客名をあらかじめ絞り込んでおく必要があります。

おすすめは、「正規化キーの先頭3文字が一致する既存顧客名を候補として抽出する」というやり方です。雑なようですが、これで候補を10件程度に絞れれば十分です。

=TEXTJOIN(" / ", TRUE,
  FILTER(Customers!company_raw,
    LEFT(Customers!company_key,3)=LEFT(company_key,3)
  )
)

候補リストを作ったら、AI関数で判定します。AI関数はネストできないため、独立した列として設けます。

=AI(
 "次の会社名Aが、候補リスト内のいずれかと同一企業か判定。出力は MATCH / NO_MATCH / UNSURE のどれか1語のみ。判定基準:法人格(株式会社/有限会社)は無視。表記ゆれは吸収。ただし別会社の可能性が少しでもあるなら UNSURE。",
  company_raw & " / 候補: " & candidate_name
)

プロンプトでは、出力形式を明確に指定しておくのがコツです。「MATCH / NO_MATCH / UNSURE のどれか1語のみ」と指定しておけば、後続の処理で扱いやすくなります。

最終的なexclude列は、完全一致がTRUE、またはAI判定がMATCHの場合に「X」を入れるようにします。

=IF( OR(dup_exact, dup_ai="MATCH"), "X", "" )

Step4:大量データを扱うときの「バッチ処理」

AI関数には一括生成できるセル数の上限があります。公式には200〜350セル程度とされていますが、上限に達すると一定時間(24時間など)待つ必要が生じる可能性もあります。

大量の営業リストを処理する場合は、以下のように割り切って運用するのがおすすめです。

まず、AI判定が必要な行だけをフィルタリングし、200行ずつ生成します。上限に達したら翌日に続きを処理する、という流れです。完全一致で8割方の消し込みが終わっていれば、AI判定が必要な行はそれほど多くないはずなので、実際には数日で終わるケースがほとんどです。

Step5:監査と情報管理の注意点

AI関数を使ううえで、忘れてはならないのが情報管理です。AI関数に渡したデータは、Googleのサーバーで処理されます。個人情報や機密情報を含む列は、むやみに参照範囲に含めないようにしましょう。

また、AIへのフィードバック投稿は人が閲覧できる可能性があると明記されています。会社名程度であれば問題ないケースが多いですが、取引金額や担当者名など、機微な情報は渡さないのが基本です。

運用を続けていく中でプロンプトを改善する場面も出てくるでしょう。そのときのために、「prompt_version」といった列を設けておくと、どのバージョンのプロンプトで判定したのかを追跡できて便利です。

まとめ:仕組み化すれば、担当者が変わっても回る

ChatGPTやCopilotにExcelファイルを丸投げして「重複を見つけて」と指示する方法も、たしかに手軽で便利です。ただ、その場限りの作業になりがちで、担当者が変わったときに再現しにくいという弱点があります。

今回紹介した方法は、正規化と完全一致で大半を処理し、曖昧なケースだけAI関数に任せるというアプローチです。標準関数で処理できる部分は高速かつ確実に動きますし、AI関数の出番を最小限に抑えることで、コストやブレ、上限の問題も回避できます。

シートの構造と数式をテンプレート化しておけば、次回以降はリストを貼り付けるだけで消し込みが完了します。営業チームの生産性を一段上げたいなら、ぜひ一度試してみてください。

ブログ一覧へ戻る
AIネイティブ CRM / SFA / MA Google Workspace 統合型で営業を加速