Excelで住所から政令指定都市名と行政区名を一括りで分割する方法【DM・宛名シールなどの印字の準備のために】

はじめに

関数で一括で郡市区町村名を取り出すのに苦労することが多いこの問題、以前取り上げた道府県名東京都+特別区郡町名郡村名を住所から順次抜き出した後、次に「政令指定都市と行政区」を分割・抽出します

さて、なぜ「政令指定都市と行政区」とひとまとまりで抜き出すのか。
「市」と「区」とで別個に抜き出せば政令指定都市以外の市も一緒に取り出せて手間が省けるのではないか。
そう思われるかも知れません。

実は、「区」を行政区画として使用しているのは政令指定都市だけではないのです。


  • 「地域自治区」という、最近出来た区画。(例:上越市安塚区)
  • 地域名としての「町名」の頭に「●●区」と付けられた地域名としての一部名称(例:姫路市飾磨区)


他にも法律上、「区」を付けられることがありますが、現在住所表記上存在するのは以上の2つになります。

そして「政令指定都市と行政区」はひとまとまり、上越市や姫路市などは区と別個にするのか?

それは便宜上、郵便番号の区分を踏襲するからです。
後は慣例的にこのように分割した方が良いと判断しました。

というわけで、今回は「政令指定都市と行政区」をひとまとまりで抜き出す方法を紹介いたします。

目次


政令指定都市名と行政区名を調べる

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

最初に、全ての政令指定都市名と行政区名を収集します。

政令指定都市名と行政区名一覧は次の通り。


以下のサイトで調べました。


次に、政令指定都市名と行政区名内に「市」「区」が使用されていたら政令指定都市名と行政区名を抜き出すのが難しくなるので、政令指定都市名と行政区名内に「市」「区」が使用されているかどうかを、前記の「政令指定都市名と行政区名一覧」で調べます。

政令指定都市名と行政区名内に「市」「区」が使用されているかどうかを調べる関数は以下の通り。

政令指定都市名内に「市」「区」が使用されているかどうか
=IF(COUNTIF(I2,"*市*市*"),"YES","")
=IF(COUNTIF(I2,"*区*"),"YES","")
行政区名内に「市」「区」が使用されているかどうか
=IF(COUNTIF(I2,"*区*区*"),"YES","")
=IF(COUNTIF(I2,"*市*"),"YES","")


政令指定都市名と行政区名に「市」「区」がある場合は「YES」を表示し、1文字の場合は何も表示しない、という関数です。

「政令指定都市名と行政区名一覧」にこれら関数を挿入し調べた結果は以下の通り。

  • 政令指定都市名には「市」が2文字以上無く、「区」は無し
  • 行政区名には「郡」は無く、「村」は2文字以上無し

それから、道府県名と東京都+特別区名、郡町名、郡村名を取り出した後の住所の左端は、「政令指定都市と行政区」「市名」、「地域名」が来ています。そのうち町名(東京都で郡名のない)」「村名(東京都で郡名のない)」「市名」に「区」がある場合、政令指定都市名と行政区名の抽出時に一緒に抜き出されてしまう可能性があります

ですので、「町名(東京都で郡名のない)」「村名(東京都で郡名のない)」「市名」に「区」が使用されているかを確認します。その関数は以下の通りです。
=IF(COUNTIF(I2,"*区*"),"YES","")
調べた結果、「町名(東京都で郡名のない)」「村名(東京都で郡名のない)」「市名」に「区」は使用されていませんでした。

最後に、政令指定都市は20市と少ないので、「札幌市●●区」のように、政令指定都市名20市を関数内で直接指定してしまいます。その方が簡単ですので。

以上の結果をまとめると、
  • 政令指定都市名には「市」が1文字のみ、「区」は無し
  • 行政区名には「市」は無く、「区」は1文字のみ
  • 政令指定都市名の文字数は、2〜5文字
  • 「町名(東京都で郡名のない)」「村名(東京都で郡名のない)」「市名」に「区」は無し
  • 政令指定都市は20市と少ないので関数内で直接指定
住所から政令指定都市名と行政区名を抜き出すのは、関数は複雑ですが考え方は簡単です。

住所から政令指定都市名と行政区名を抜き取る

では住所から政令指定都市名と行政区名を抜き出します。

政令指定都市名は20市と少ないので関数内で直接指定して。

まず、郡村名を検索するにはCOUNTIF関数を使用します。
COUNTIF関数は以下の通りになります。
COUNTIF(I2,"札幌市*区*")
「札幌市*区*」の意味は、「*」は任意の文字列(1文字以上)、次に「札幌市」、続いて「*」は任意の文字列(1文字以上)と「区」、それから「*」は任意の文字列(1文字以上)なので、「1文字以上の文字列と札幌市と1文字以上の文字列と区と1文字以上の文字列」となります。

これに倣って、他の19政令指定都市名分のCOUNTIF関数を決めます。
その関数は以下の通り。
COUNTIF(I2,"仙台市*区*")
COUNTIF(I2,"さいたま市*区*")
COUNTIF(I2,"千葉市*区*")
COUNTIF(I2,"横浜市*区*")
COUNTIF(I2,"川崎市*区*")
COUNTIF(I2,"相模原市*区*")
COUNTIF(I2,"新潟市*区*")
COUNTIF(I2,"静岡市*区*")
COUNTIF(I2,"浜松市*区*")
COUNTIF(I2,"名古屋市*区*")
COUNTIF(I2,"京都市*区*")
COUNTIF(I2,"大阪市*区*")
COUNTIF(I2,"堺市*区*")
COUNTIF(I2,"神戸市*区*")
COUNTIF(I2,"岡山市*区*")
COUNTIF(I2,"広島市*区*")
COUNTIF(I2,"北九州市*区*")
COUNTIF(I2,"福岡市*区*")
COUNTIF(I2,"熊本市*区*")
これで、政令指定都市名を行政区名を指定することができます。

この20政令指定都市名と行政区名のどれかがマッチすれば良いので、OR関数を用いて以下の通りにまとめます。
=OR(COUNTIF(I2,"札幌市*区*"),COUNTIF(I2,"仙台市*区*"),COUNTIF(I2,"さいたま市*区*"),COUNTIF(I2,"千葉市*区*"),COUNTIF(I2,"横浜市*区*"),COUNTIF(I2,"川崎市*区*"),COUNTIF(I2,"相模原市*区*"),COUNTIF(I2,"新潟市*区*"),COUNTIF(I2,"静岡市*区*"),COUNTIF(I2,"浜松市*区*"),COUNTIF(I2,"名古屋市*区*"),COUNTIF(I2,"京都市*区*"),COUNTIF(I2,"大阪市*区*"),COUNTIF(I2,"堺市*区*"),COUNTIF(I2,"神戸市*区*"),COUNTIF(I2,"岡山市*区*"),COUNTIF(I2,"広島市*区*"),COUNTIF(I2,"北九州市*区*"),COUNTIF(I2,"福岡市*区*"),COUNTIF(I2,"熊本市*区*"))
政令指定都市名を行政区名を抜き出すのは、LEFT関数を使用します。
=LEFT(I2,[文字数])
政令指定都市名を行政区名の最後の文字は「区」になります。

つまり、「区」の位置番号が政令指定都市名を行政区名の文字数になります。
これはFIND関数を使用して以下のようになります。
=LEFT(I2,FIND("区",I2))
「区」は、I2セル内の文字列のどの位置にあるのか、という意味になります。

これらをまとめると、関数は以下のようになります。
=IF(OR(COUNTIF(I2,"札幌市*区*"),COUNTIF(I2,"仙台市*区*"),COUNTIF(I2,"さいたま市*区*"),COUNTIF(I2,"千葉市*区*"),COUNTIF(I2,"横浜市*区*"),COUNTIF(I2,"川崎市*区*"),COUNTIF(I2,"相模原市*区*"),COUNTIF(I2,"新潟市*区*"),COUNTIF(I2,"静岡市*区*"),COUNTIF(I2,"浜松市*区*"),COUNTIF(I2,"名古屋市*区*"),COUNTIF(I2,"京都市*区*"),COUNTIF(I2,"大阪市*区*"),COUNTIF(I2,"堺市*区*"),COUNTIF(I2,"神戸市*区*"),COUNTIF(I2,"岡山市*区*"),COUNTIF(I2,"広島市*区*"),COUNTIF(I2,"北九州市*区*"),COUNTIF(I2,"福岡市*区*"),COUNTIF(I2,"熊本市*区*")),LEFT(I2,FIND("区",I2)),"")









Comments

よく読まれている記事

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

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

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

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

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