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)
これで、「稲城市」が出るようになりました。
コメント