都道府県から「都・府・県」を取り除くシンプルな方法

エクセルの醍醐味のひとつは、文字列操作が容易である、という点にある。本稿では、北海道を除く都道府県名から「都・府・県」を取り除く、非常にスマートなやり方を紹介したい。

ときどきお問い合わせをいただくのが、「都道府県」のデータから「都・道・府・県」を取り除く方法だ。さっそく、例を挙げよう。

日本には都道府県が47個ある。

「青森県」、「岩手県」…、といった具合に、「都道府県」を付す場合と、「青森」、「岩手」…、といった具合に、都府県名のみを付す場合があるだろう。ただし、例外として、北海道の場合は「道」を除いた「北海」だけでは道名として成り立たない。

仮に、こんなエクセルシートがあったとしよう(図表1)。

図表1 都道府県名

ここではシンプルに、A列に都道府県名のみを入力したシートを準備した。

このA列から、図表2のように、「都道府県名」のみを取り出してみたい。

図表2 北海道以外については「都府県」を除いたデータ

いったいどうやるのが良いか。

この点、類似サイトを眺めると、こんなやり方が書かれていることが一般的だ。

  • 都道府県の名称は、神奈川県、和歌山県、鹿児島県を除くと、すべて3文字です。
  • ですので、計算式でIF文を使い、まずは北海道を除外しましょう。
  • 次に、神奈川県、和歌山県、鹿児島県の3つの県のどれかに該当していたら、その3つの県を除外しましょう。
  • 残りの都府県について、LEFT関数(左からの文字数を切り取る関数)で、2番目まで切り取りましょう。

…。

これは、一見するとそのとおりであり、初心者にとってはこれが一番わかりやすい。

すなわち、先ほどの図表1に関していえば、B2~C2セルあたりにこんな関数を入れてやれば良い、ということだ。

【B2セル】 =IF(A2=”北海道”,A2,0)

【C2セル】 =IF(or(A2=”神奈川県”,A2=”和歌山県”,A2=”鹿児島県”),left(A2,3),left(A2,2))

B2セルの意味は、「もしA2の値が “北海道” ならば、A2の値をそのまま採用し、そうでない場合は0を返せ」、C2セルの意味は、「もしA2の値が “神奈川県” “和歌山県” “鹿児島県” のいずれかであるならば、A2の左から3文字目までを、そうでない場合は左から2文字目までを切り取って返せ」、という意味だ。

これを入力した結果が、図表3のとおりだ。

図表3 入力結果

設例のケースだと、C2セルに「北海」と表示されてしまっているのはご愛嬌だ。

図表3はわかりやすく、IF文を2つに分けたが、実務的にはB2とC2をひとつのセルにまとめ、次のように記述してやると良い。

【D2セル】 =IF(A2=”北海道”,A2,IF(or(A2=”神奈川県”,A2=”和歌山県”,A2=”鹿児島県”),left(A2,3),left(A2,2)))

その結果が、図表4のとおりである。

図表4 入力結果

ただ、この方式だと、いかにもまどろっこしい。文字数で76文字にも達するからだ。

図表4のようなケースだと、タイトルも含めてせいぜい48行しかないが、これが何万行にも及ぶ顧客名簿等であれば、それだけで大変に多くの目盛を食うし、意外と脆弱なエクセルがあっけなくハングアップし、作業結果が失われてしまうという悲劇にも見舞われかねない。

もっと、シンプルにやろう。

【E2セル】 =IF(A2=”北海道”,A2,LEFT(A2,LEN(A2)-1))

この結果が、図表5である。

図表5 入力結果

いかがだろうか。

この方法だと、なんと、34文字に圧縮できた。先ほどの図表4と比べてデータ量は約45%だ。

この計算式は、A2セルの値が「北海道」だったときだけA2セルの値をそのまま採用し、それ以外の場合は左側から「文字長-1」を引く、というものである。

データの加工はスマートにやりたいものだ。