表記ゆれを一括置換 ―(株)と 株式会社 が混在するカオスに終止符を
実際のビジネスシーンで使える自動化100例をGASで実装するシリーズ「GAS自働化100本ノック」。その記念すべき1本目
スプレッドシートの地味に面倒な作業 – 検索と置換

取引先リストを見ると、こんな状態になっていること、ありますよね?
(株)山田商事
株式会社山田商事
(株)山田商事
㈱ヤマダ商事
同じ会社なのに4パターン。そう、表記ゆれです。
こうした表記ゆれは、ピボットテーブルやVLOOKUPが一致しない原因になり、重複チェックもすり抜けます。顧客データや商品マスタが汚れていると、集計結果そのものが信用できなくなります。
そこで登場する機能が 検索と置換ですが、この検索と置換、地味に面倒ですよね?
数パターンならまだしも、、10個、20個と増えてくると1回の作業に何分もかかります。置換漏れや順序ミスも起きやすくなります。
GASなら「置換辞書」シートにルールを並べるだけ
それなら、GASで楽しちゃいましょ!
「置換辞書」シートにルールを並べるだけで、ワンクリック一括置換できちゃいます!
コード.gs
// コード.gs
/**
* 表記ゆれを辞書ベースで一括統一する
* 「置換辞書」シートにルールを定義 → 対象シートを一括変換
*/
function normalizeText() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const dictSheet = ss.getSheetByName('置換辞書');
if (!dictSheet) {
SpreadsheetApp.getUi().alert('「置換辞書」シートが見つかりません。\n先に作成してください。');
return;
}
const dictData = dictSheet.getDataRange().getValues();
const rules = [];
for (let d = 1; d < dictData.length; d++) {
const before = String(dictData[d][0]);
const after = String(dictData[d][1]);
if (before === '') continue;
rules.push({ before: before, after: after });
}
if (rules.length === 0) {
SpreadsheetApp.getUi().alert('置換辞書にルールが登録されていません。');
return;
}
const targetSheet = ss.getActiveSheet();
if (targetSheet.getName() === '置換辞書') {
SpreadsheetApp.getUi().alert('置換辞書シート自体は変換対象外です。\n変換したいシートを選択してから実行してください。');
return;
}
const range = targetSheet.getDataRange();
const values = range.getValues();
let totalReplacements = 0;
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < values[i].length; j++) {
if (typeof values[i][j] !== 'string') continue;
const original = values[i][j];
let replaced = original;
for (let r = 0; r < rules.length; r++) {
replaced = replaced.split(rules[r].before).join(rules[r].after);
}
if (replaced !== original) {
values[i][j] = replaced;
totalReplacements++;
}
}
}
range.setValues(values);
SpreadsheetApp.getUi().alert(
'完了しました。\n' +
'シート「' + targetSheet.getName() + '」の ' + totalReplacements + ' セルを置換しました。'
);
}
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('自動ボタン')
.addItem('表記ゆれ置換(辞書ベース)', 'normalizeText')
.addToUi();
}
使い方
① 新規または既存のスプレッドシートを用意
表記ゆれを直したいデータがあるスプレッドシートを開きます。
新しいスプレッドシートで試してから本番に導入するのがおすすめです。
② 「置換辞書」シートを作成
シートを1枚追加し、名前を「置換辞書」にします。
A列に「変換前」、B列に「変換後」のルールを記入してください。

※ ルールは自由に追加、変更できます。
※ 新しいスプレッドシートを用意した場合は、画像「表記ゆれの例」のようなシートも作る必要があります。
③ 拡張機能 → Apps Script のコード.gsに上記スクリプトをコピペして保存
④ スプレッドシートをリロード
メニューバーに「自動ボタン」が追加されます。
⑤ 変換したいシートを開いた状態で「自動ボタン」→「表記ゆれ置換(辞書ベース)」を実行
初めて実行すると「承認が必要です」というダイアログが表示されます。
以下の手順で許可してください。
-
「権限を確認」をクリック
-
自分のGoogleアカウントを選択
-
「詳細」をクリック → 「〇〇(安全ではないページ)に移動」をクリック
-
「許可(続行)」をクリック
これはGASがスプレッドシートのデータにアクセスするために必要な手順です。自分で貼り付けたコードなので安全です。承認は初回のみで、次回以降は表示されません。
⑥ 結果を確認
一括置換が実行されているはずです。
ワンポイント・レッスン
getActiveSpreadsheet() — GASからスプレッドシートを操作する出発点
コードの冒頭にあるこの部分を見てください。
const ss = SpreadsheetApp.getActiveSpreadsheet();
const dictSheet = ss.getSheetByName('置換辞書');GASでスプレッドシートを操作するときは、大体 `SpreadsheetApp.getActiveSpreadsheet()` から始まります。これで「今開いているスプレッドシート」を取得し、変数 `ss` に入れます。
次に `ss.getSheetByName('置換辞書’)` で、スプレッドシートの中から特定のシートを名前で取り出します。
スプレッドシート → シート → データと、大きい箱から順に中身を取り出していくイメージです。この流れはGASのほぼすべてのスクリプトで共通なので、最初に覚えておくと便利です。
まとめ
-
置換辞書シートにルールを並べてワンクリック実行するだけで、表記ゆれの一括統一が完了します。
-
ルールの追加・変更もシート上で完結し、コードを触る必要はありません。
-
表記が統一されることで、VLOOKUP の不一致やフィルタの漏れといったデータ品質の問題も未然に防げます。
拡張コードで別タイプの表記ゆれをカバー

-
`03−1234−5678` – 電話番号が全角のまま
-
`ジョン・スミス` – 半角カタカナが読みにくい
-
`TANAKA@yamada.co.jp` と `tanaka@yamada.co.jp` – 同じアドレスなのに大文字小文字が違う
パターンが無限にあるため、辞書管理には向かないタイプの表記ゆれです。
拡張コードでは、これらの表記ゆれもワンクリックで解決します。
この記事の続きはnoteで公開しています。
