こんにちは、キャリカク一宮駅前の利用者「ファーストネームが K」 です。
絶対に間違えられない固有名詞のテキスト処理を自動化・半自動化しようというのが今回のお話です!

過去の私のブログ「ショートカットキー」でもぼやいていますが、病気のせいか加齢のせいか、複雑な作業だと途中でどこまでやったかわからなくなることが多々あります。しかしパソコン作業だと自動化または半自動化できるかもしれないので、日々の作業でGoogleスプレッドシートの関数を自分用業務アプリとして使っています。あくまで「自分用」で、その場しのぎの「業務アプリ」です。
電卓スプレッド 連載目次
~電卓から始まる編~
(1) はじまり・はじまり~👏
(2) 範囲で計算SUM系関数
(3) オートフィルで魔方陣
(4) ドル記号$で九九表
~自分用業務アプリ編~
(5) CONCATENATEで市場調査
(6) PROPER、SPLIT、TEXTJOINで名刺作成 ← 今回
(7) SUBSTITUTEで定型文作成
(8) XLOOKUPで業務管理
タイトルに「名刺作成」とありますが、それに限らず、一般にテキスト処理における間違いを減らすにはどうしたらいいだろうか、ということを念頭に置いて読んでいただけると嬉しいです。今回は PROPER、SPLIT、TEXTJOIN という3つの関数で人名のローマ字表記を半自動的に修正する自分用業務アプリを紹介します。
🔰👩🏫記事中の数式入力例をGoogleスプレッドシートで試したい人は、Googleドライブの「マイドライブ」フォルダに移動して [新規作成]→[Googleスプレッドシート] で自分専用のスプレッドシートで試すことができます。
⚠👨🏫記事中の数式入力例はGoogleスプレッドシートでしか試していませんが、マイクロソフトExcelでも似たような感じでできるはずです。
⚠👩🏫 Excelには SPLIT 関数がないので、この記事の例をExcelで試すときは、代わりに TEXTSPLIT を使ってください。
キャリカクでは、イラストレーターを使って名刺を作成するという作業もあります。人名の読み仮名をローマ字表記する場合、苗字と下の名前の先頭だけ大文字にするか、ぜんぶ大文字にするか、といった選択肢がありますが、同じ会社・組織の名刺ならどれかに統一することになるでしょう。ここではとりあえず、「先頭だけ大文字」で仕様化されている体で話を進めます。
とは言っても、顧客からのデータはまちまちです。仕様通り Oda Nobunaga かと思えば、TOYOTOMI HIDEYOSHI だったりします。Toyotomi Hideyosi って直せばいいじゃんって思うかもしれませんが、固有名詞だから間違えたらどうしようと気が気ではありません。(わざと間違えてみたけど気づきました?)
イラストレーターには気の利いた機能がついていて、[書式]→[大文字と小文字の変更]メニューに次の4つのツールが備わっています。
・すべて大文字
・すべて小文字
・単語の先頭のみ大文字
・文頭のみ大文字
これらのうち「単語の先頭のみ大文字」ツールを使えば、TOYOTOMI HIDEYOSHI が自動的に Toyotomi Hideyoshi に変換されるので便利です。
ところが、このあいだ、たぶん「文頭のみ大文字」を選択してしまって、つまり、Toyotomi hideyoshi になってしまって、作り直しになってしまいました。気をつければいいじゃんって思うかもしれませんが、パソコン作業で自動化できれば、気をつけることが減ります。気をつけることが減るのは、そもそも間違えにくくなっているから、間違いも減ってるって理屈です😉
スプレッドシートには、好都合なことに、単語の先頭だけ大文字にする PROPER というテキスト処理関数があります。これで「単語の先頭のみ大文字」に特化した業務アプリを作ってみましょう。
とりあえず次の表を、「ローマ字読み」と書かれたセルが A1 の位置になるようにコピペするか打ち込んでください(コピペで貼り付けするときは Ctrl+Shift+V(値のみ貼り付け)が便利です)。
| ローマ字読み | TOYOTOMI HIDEYOSHI |
| 先頭大文字 | =PROPER(B1) |
すると、下の図のように、数式 =PROPER(B1) と書かれたセル B2 が単語の先頭のみ大文字の "Toyotomi Hideyoshi" に変換されているのがわかります。

もう一度名刺の仕様を確認すると、人名の読み仮名はローマ字表記で苗字の先頭と下の名前の先頭だけ大文字にするのでした。でも、例えば徳川家康さんなら、IEYASU TOKUGAWA で依頼されることもありました😢
これまでずっと、ローマ字表記でも苗字、下の名前の順だったので、Tokugawa Ieyasu に直さないといけません。
これは本格的(⁉)な業務アプリになりそうなので、一つずつ問題をクリアしていきましょう。まずは、IEYASU TOKUGAWA のようなスペース区切りのテキストを分割できないでしょうか? できます、SPLIT 関数で!
ステップ2で作った表に、姓名分割用の行を追加する形で、次の表を、「ローマ字読み」と書かれたセルが A1 の位置になるようにコピペするか打ち込んでください(冒頭で述べたとおり、Excelで試す場合は、SPLIT 関数の代わりに TEXTSPLIT 関数を使ってください)。
| ローマ字読み | IEYASU TOKUGAWA |
| 先頭大文字 | =PROPER(B1) |
| 姓名分割 | =SPLIT(B2," ") |
すると下の図のように、B2 の "Ieyasu Tokugawa" を分割した結果が B3 に "Ieyasu"、C3 に "Tokugawa" と表示されます。

SPLIT に渡している2つ目のパラメーターは、半角スペースを半角二重引用符 " で囲んだものです。つまりこの式は、B2 のテキストが半角スペースで区切られたものなら、B2 のテキストから半角スペースを取り除いてバラバラにして、結果を複数のセルに表示させることを意味します。
SPLIT 関数は、区切り文字の指定を変えれば、カンマ区切りやタブ区切りなど、いろんなデータフォーマットのデータをスプレッドシート上に展開できます。
逆に、スプレッドシート上の複数のデータを、指定した区切り文字で区切った一つのテキストにまとめる TEXTJOIN(または JOIN)関数もあります(第5回でもGoogle検索ワードを "+" で区切るのに使っています)。
ステップ3で、姓名をセル B3 と C3 にバラしたので、今度はそれらを入れ替えた上で、TEXTJOINでまとめれば "Ieyasu Tokugawa" を "Tokugawa Ieyasu" に直せそうです。
ステップ3と同様に、姓名入れ替え用の行を追加する形で、次の表を、「ローマ字読み」と書かれたセルが A1 の位置になるようにコピペするか打ち込んでください(冒頭で述べたとおり、Excelで試す場合は、SPLIT 関数の代わりに TEXTSPLIT 関数を使ってください)。
| ローマ字読み | IEYASU TOKUGAWA |
| 先頭大文字 | =PROPER(B1) |
| 姓名分割 | =SPLIT(B2," ") |
| 姓名入れ替え | =TEXTJOIN(" ",TRUE,C3,B3) |
すると下の図のように、B3 の "Ieyasu" と C3 の "Tokugawa" を C3、B3 の順に半角スペース " " で区切られた "Tokugawa Ieyasu" が B4 に表示されています。

SPLIT と違って、TEXTJOIN は区切り文字を最初のパラメーターとして指定します。TEXTJOIN の2番目のパラメーター TRUE は、空白セルを無視するということを意味します(詳しくは、第5回のステップ3も参照してください)。
あくまで自分用業務アプリなので、その場しのぎのツールにすぎません。いろんな事態に対応しようとして完璧を追求しすぎると、泥沼にはまることもあるのでご注意ください😉
例えば、姓名の区切り文字が半角スペースではなく全角スペースになっていたとしても、両方に対応できる汎用ツールにしよう、なんてしないほうがいいと思います。
やり方としては、レアケースの場合はあきらめて手動で修正するか、せいぜい、全角スペースを半角スペースに置き換える自分用業務アプリを別に作ることでしょうかねぇ🤔 それには第7回で紹介予定の SUBSTITUTE が使えるので、乞うご期待!(substituteは置き換えるって意味です)
就労継続支援B型
キャリカク一宮駅前
愛知県一宮市大江3丁目12-22 一観ビル1階
電話番号:0586-71-3577 FAX:0586-71-3587
CONTACT


