Excelで住所から「東京都+特別区名」を一括りで分割する方法【DM・宛名シールなどの印字の準備のために】

2020年8月4日追記:「特別区名」→「東京都+特別区名」の抽出に変更

住所から都道府県名を取り出す方法は、道府県名についてはこの記事の通り行いますが、都名については別の方法で行うことにしました。

理由は、「堺市堺区」のように「区」が4文字目に来る「政令指定都市名+行政区名」があり、
特別区名を抜き出す際、これらも特別区として抜き出されてしまうことが判明しました。

よって特別区名は「東京都+特別区名」と一括りにして抜き出すことにし、それに伴って都道府県名も「道府県名」を抜き出す方法に変更しました。

はじめに

関数で一括で郡市区町村名を取り出すのに苦労することが多いこの問題、以前取り上げた都道府県名を住所から抜き出しました。

上記のやり方で順次、「東京都と特別区」「郡町名」「郡村名」「政令指定都市と行政区」「町名(東京都で郡名のない)」「村名(東京都で郡名のない)」「市名」を随時LEFT関数を用いて取り出していきます。

そもそもこの問題の根本は、「郡」「市」「区」「町」「村」が入っている郡市区町村名および地域名があることです。

例えば、市名では「郡山市」「市川市」「村上市」「町田市」など、地域名では「郡山」「市谷」など。

これらがあると、中途半端な抜き出しになってしまうのです。

例えば郡名を抜き出す時、「大和郡山市●●1丁目23-45」の場合、「大和郡山市」の3文字目の「郡」が引っかかり、「大和郡」が抜き出されてしまう。

ですが、一括でするのではなく、「特別区」「郡町名」「郡村名」「政令指定都市と行政区」「市名」の順で随時取り出すという方法ならば、郡市区町村名に「郡」「区」「市」「町」「村」があるかどうかを確認しつつ、抜き出せるのです。

では引き続き、その方法を紹介いたします。

目次


東京都+特別区名を調べる

特別区とは、東京23区を指します

道府県名を取り出したので、東京都+特別区名は住所の最初から何文字かまでになります。
FIND関数で「区」がn文字目にある時、LEFT関数でn文字取り出せば良いことになります。

最初に、全ての特別区名を収集します。

特別区名一覧は次の通り。


次に、特別区名内に「区」が2文字以上使用されていたら特別区名を抜き出すのが難しくなるので、特別区名内に「区」が2文字以上使用されているかどうかを、前記の「特別区名一覧」で調べます。

特別区名内に「区」が2文字以上使用されているかどうかを調べる関数は以下の通り。

=IF(COUNTIF(C2,"*区*区*"),"YES","")

特別区名に「区」が2文字以上ある場合は「YES」を表示し、1文字の場合は何も表示しない、という関数です。

「特別区名一覧」にこの関数を挿入し調べた結果、「区」が2文字以上ある特別区名はありませんでした

それから、特別区名の文字数と「区」の来る位置を調べた結果、特別区名の文字数は、2〜4文字。よって「東京都」の3文字が最初にあるので「東京都+特別区名」の文字数は5〜7文字「区」の来る位置は4文字目以降、になります

最後に、道府県名を取り出した後の住所の左端は、東京都+特別区名、郡名、市町村名が来ています。そのうち郡名、市町村名に「区」が住所の左端から5〜7文字にある場合、特別区名の抽出時に一緒に抜き出されてしまいます

例:「●●●●区郡」
  「●●●●●区市」
  「●●●●●●区町」 

ですので、郡名、市町村名、地域名に「区」が使用されているかを確認します。その関数は以下の通りです。

=IF(COUNTIF(C2,"*区*"),"YES","")

調べた結果、郡名、市町村名に「区」は使用されていませんでした。

郡名の文字数は2〜5文字、市町村の文字数は2〜7文字ですので、郡名、市町村名に「区」は当然4文字目以降にもありません

以上の結果をまとめると、
  • 特別区名に「区」は1文字のみ
  • 東京都+特別区名の文字数は、5〜7文字
  • 「区」の来る位置も5〜7文字目
  • 郡名、市町村名に「区」は無い(当然4文字目以降にもない)
これらの条件から、住所から東京都+特別区名を抜き出していきます。

住所から東京都+特別区名を抜き取る

では住所から東京都+特別区名を抜き出します。

最初は、東京都+特別区名を検索します。

東京都+特別区名を検索するには、COUNTIF関数を使用して以下の通りになります。

=COUNTIF(C2,"東京都*区*")

「東京都*区*」の意味は、最初に「東京都」の文字列が来て、「*」は任意の文字列(1文字以上)、次に「区」が来て、「*」は任意の文字列(1文字以上)なので、「東京都と1文字の特別区とそれ以外の1文字以上の文字列」となります。

それから、東京都+特別区名を抜き出すにはまず、FIND関数を使用して「区」の位置を調べます。
最初の3文字は「東京都」ですので、「区」の位置は必ず4文字目以降になりますので、FIND関数の「開始位置」は「4」とします。

=FIND("区",C2,4)

「区」の位置は、すなわち「東京都+特別区」の文字数になります。

「東京都+特別区名」を抜き出すには、LEFT関数で以下の通りになります。

=LEFT(C2,FIND("区",C2,4))

そうして、「東京都+特別区名」を住所から抜き出す関数は、以下の通りにまとまります。


=IF(COUNTIF(C2,"東京都*区*"),LEFT(C2,FIND("区",C2,4)),"")












Comments

よく読まれている記事

CSSボタンでテキストを天地中央に揃えるとき、なぜボタン高と行高を一緒にするのか

FullCalendarの導入からカレンダー毎の色指定まで

FacebookページのフィードURLを取得しウォールを自サイトに表示

Bloggerテンプレートのちょっとしたカスタマイズのまとめ

document.write() 複数行の記述方法