こんにちは、キャリカク一宮駅前の利用者「ファーストネームが K」 です。
メールなどの定型文で、送る相手によって文面の一部を変えたいとき、前回の名刺作成と同様に絶対に間違えられない固有名詞のテキスト処理を自動化・半自動化しようというのが今回のお話です!

過去の私のブログ「ショートカットキー」でもぼやいていますが、病気のせいか加齢のせいか、複雑な作業だと途中でどこまでやったかわからなくなることが多々あります。しかしパソコン作業だと自動化または半自動化できるかもしれないので、日々の作業でGoogleスプレッドシートの関数を自分用業務アプリとして使っています。あくまで「自分用」で、その場しのぎの「業務アプリ」です。
電卓スプレッド 連載目次
~電卓から始まる編~
(1) はじまり・はじまり~👏
(2) 範囲で計算SUM系関数
(3) オートフィルで魔方陣
(4) ドル記号$で九九表
~自分用業務アプリ編~
(5) CONCATENATEで市場調査
(6) PROPER、SPLIT、TEXTJOINで名刺作成
(7) SUBSTITUTEで定型文作成 ← 今回
(8) XLOOKUPで業務管理
自分用業務アプリ編も3回目ですが、ぜんぶテキスト処理ばかりですね。でも日々の業務で自動化できるテキスト処理作業は意外と多いのかもしれません。今回は、SUBSTITUTE(サブスティチュート、置き換える)という関数で、宛先など一部だけ異なる定型文を自動生成する自分用業務アプリを紹介します。
🔰👩🏫記事中の数式入力例をGoogleスプレッドシートで試したい人は、Googleドライブの「マイドライブ」フォルダに移動して [新規作成]→[Googleスプレッドシート] で自分専用のスプレッドシートで試すことができます。
⚠👨🏫記事中の数式入力例はGoogleスプレッドシートでしか試していませんが、マイクロソフトExcelでも似たような感じでできるはずです。
キャリカクではDM送信などで定型文を扱うことがありますが、どんな業種・部署でも、定型文を送付する作業はけっこう多いのではないでしょうか? 納品書、明細書、領収書、検査報告書、連絡先変更通知などなど。
ここでは、「ヘアサロン・キャリカク」という架空の美容院のキャンペーンで、お得意様に個別のサービスを提供するメールを送付するというケースを題材にしましょう。例えば次のような文面を考えます。

〇〇が顧客名で、××がヘアカットやカラーリングなどのメニュー名です。桃太郎様にはヘアカット、浦島太郎様にはカラーリング、かぐや姫様には眉毛カットといったように、顧客ごとに文面を変えることになります。
顧客が期待するメニューを提示できるかが今後の営業に影響を及ぼすので、顧客とメニューの組み合わせは絶対に間違えられない、という想定です。
そうであれば、顧客ごとに異なるメッセージを自動生成する業務用アプリがあったほうがいいにきまっています。そしてそれは、ある程度ならスプレッドシートの関数 SUBSTITUTE(サブスティチュート)を使えば実現できます😉
置き換える必要があるテキストが2種類あるので、一度にぜんぶはできません。まずは、顧客名だけを変えられるバージョンの自分用業務アプリを作りましょう。
とりあえず次の表を、「テンプレート」と書かれたセルが A1 の位置になるようにコピペするか打ち込んでください。(いろいろ都合があって、メッセージの一部だけ使った例になっています。コピペするときは Ctrl+Shift+V(値のみ貼り付け)が便利です。)
| テンプレート | 【顧客】様には期間中、[メニュー]を10%オフでご利用いただけます。 |
| 【顧客】 | 桃太郎 |
| [メニュー] | ヘアカット |
| 半分完成 | =SUBSTITUTE(B1,A2,B2) |
すると、下の図のように、数式 =SUBSTITUTE(B1,A2,B2) と書かれたセル B4 には、セル B1 のテキストの "【顧客】" が "桃太郎" に置き換えられたテキストが表示されます。

この数式
SUBSTITUTE(B1,A2,B2)
は、セル B1 のテキストのなかに A2 が含まれていれば、A2("【顧客】")を B2("桃太郎")に置き換える(substitute)という意味です。
セル B2 の "桃太郎" を "浦島太郎" とかいろいろ変えてみて、その変更が B4 に反映されることを確かめてください(いろいろ都合があって、メッセージの一部だけの例ですが、置き換えたい文字列が2つ以上あっても、ちゃんと全部置き換えてくれます)。
もちろん、"[メニュー]" の部分は何も変わらないので、このままでは完成ではありません。
残りの半分、"[メニュー]" を "ヘアカット" に置き換えるには、B4 の数式の結果をさらに置き換えるだけです。
さっきと同じように、次の表を、「テンプレート」と書かれたセルが A1 の位置になるようにコピペするか打ち込んでください(あるいは最後の「完成」の行だけ付け加えてください)。
| テンプレート | 【顧客】様には期間中、[メニュー]を10%オフでご利用いただけます。 |
| 【顧客】 | 桃太郎 |
| [メニュー] | ヘアカット |
| 半分完成 | =SUBSTITUTE(B1,A2,B2) |
| 完成 | =SUBSTITUTE(B4,A3,B3) |
すると、下の図のように、数式 =SUBSTITUTE(B4,A3,B3) と書かれたセル B5 には、セル B4 のテキストの "[メニュー]" が "ヘアカット" に置き換えられたテキストが表示されます。

セル B4 は、セル B1 のテキストの "【顧客】" が "桃太郎" に置き換えられたテキストでした。すると、つまるところ結局、セル B5 には、元のテンプレート B1 のテキストの "【顧客】" と "[メニュー]" がそれぞれ、"桃太郎" と "ヘアカット" に置き換えられたテキストになった、ということになります。
「半分完成」の欄は冗長だな余計だな、と思うかもしれません。一度に2種類置き換えるなら、次のように SUBSTITUTE を2回適用すればできます。
SUBSTITUTE(SUBSTITUTE(B1,A2,B2),A3,B3)
でもこれ、ちょっと読みにくいと思います。内側の SUBSTITUTE から読みます。「テンプレート B1 のテキスト中の "【顧客】" を "桃太郎" に置き換えたテキスト中の "[メニュー]" を "ヘアカット" に置き換える」って感じです。
あくまで自分用業務アプリなので、その場しのぎのツールにすぎません。完璧を追求しすぎると、泥沼にはまることもあるのでご注意ください😉
とはいえ、関数のなかに関数を書くやり方(関数の合成)はよくパターンです(INDEX のなかで MATCH を使うとか)。だから、徐々に慣れていくしかないですかねぇ🤔
だけど、よくある関数合成のパターンは新たに一つの関数に昇格することもあります。例えば、INDEX のなかで MATCH を一つだけ使うパターンは XLOOKUP でまかなえます。
第8回はその XLOOKUP(エックス・ルックアップ)です❣
就労継続支援B型
キャリカク一宮駅前
愛知県一宮市大江3丁目12-22 一観ビル1階
電話番号:0586-71-3577 FAX:0586-71-3587
CONTACT


