Excelで住所から市を抜き出したい

Excelの住所一覧があります。
住所のフォーマットは次のようになっています。

東京都 稲城市 東長沼NNNN-N

ここから市を抜き出したセルを作りたい場合、次の方法があります。
フォーマットは、都道府県名、市名、町名の間に半角スペースが入っています。
これを利用したいと思います。
ある言語では、split という検索文字で区切って、区切られた文字を配列に入れるという便利な関数があるのですが、Excelにはありません。
いろいろと組み合わせて使わないといけないことがわかりました。
まず、次の関数が使えそうです。

MID(文字列, 開始位置, 文字数)

文字列の開始位置から文字列分の文字列を抜き出す関数です。

文字列は、住所のセルを指定します。
開始位置は、難しいですね。スペースの位置がわかればいいのですが…
文字数ですが、一番長い市区町村名は、茨城県のかすみがうら市とつくばみらい市、それと鹿児島県のいちき串木野市の6文字とのことです。なので、文字数は7(6+1(市))でよいかなと思うのですが、今後のことも考えて少しおおめで10にしておきます。

スペースの位置がわかる関数がわかりました。

FIND(検索文字列, 対象, [開始位置])

対象の文字列を検索文字列の中で検索し、その検索文字列が最初に現れる位置を左端から数え、その番号を返します。開始位置は、検索文字列の何文字目から検索を始めるかを指定します。普通は省略して始め(1)からでよいと思います。

=FIND(" ", "東京都 稲城市 東長沼NNNN-N")

“東京都 稲城市 東長沼NNNN-N”がB2のセルにあるとすると、

=FIND(" ", B2)

便宜的にこれをAとします。

とすると、スペースの位置の数字4が表示されます。
市が始まるのは次の文字からなので、+1すればよさそうです。

=MID(B2,A+1, 10)

便宜的にこれをBとします。

上記のようにすると、「稲城市 東長NNN」が表示されます。
これをFINDでスペースを検索して、左からその文字数分-1表示できればよさそうです。
そう思って調べたら、次の関数がありました。

LEFT(文字列, [文字数])

文字列の先頭(左)から指定された文字数分の文字を返します。

まず、「稲城市 東長NNN」のスペースの位置を知るには次のようにします。

=FIND(" ", B)

すると、スペースの位置で4が表示されるので、-1して3にします。

=FIND(" ", B)-1

これをLEFTに適用すると次のようになります。

=LEFT(B, FIND(" ", B)-1)

便宜的に省略した部分を戻すと次のようになります。

=LEFT(MID(B2,FIND(" ", B2)+1, 6), FIND(" ", MID(B2,FIND(" ", B2)+1, 6))-1)

これで、「稲城市」が出るようになりました。

コメント

タイトルとURLをコピーしました