都道府県名抽出
都道府県名の文字長を利用−4文字の県とそれ以外の都道府県
都道府県名の長さは、は現在のところ3文字、もしくは4文字です。(都道府県の文字を含む)
しかも、4文字は、
鹿児島県、和歌山県、神奈川県
の、3「県」のみと限定されます。
よって、住所の先頭が必ず都道府県名で始まると約束されている場合、
4文字目が"県"であれば、先頭から4文字が県名、
4文字目が"県"で無ければ、先頭から3文字が都道府県名
となります。いたって簡素。
=IF(MID(E11,4,1)<>"県",LEFT(E11,3),LEFT(E11,FIND("県",E11)))
ただし、都道府県名が3文字か4文字、かつ、これは4文字の都道府県が県に限定されているから簡素なのであって、
調べる文字列が市町村の場合や、長さが不定の場合は別の方法を使うしかありません。
次項では、候補リストを使用した検索(チェック)を考えます。
住所から候補リストを検索-VLOOKUP
先頭は都道府県名で始まる仕様ですが、
入力漏れがあるようです。
(住所の先頭に必ず都道府県名があるとは限らない。)
「
PREFECTURE」の名前(末尾シート「都道府県リスト」で定義)を参考に、都道府県名を分離してください。
ここでは、VLOOKUP関数を使用して、リストから検索する方法を考えてみます。
住所の先頭3文字、または、4文字を都道府県名の候補リストから検索します。
3文字を検索してリストに有ったら、その3文字が都道府県名
無かった場合、4文字を検索。
有ったら、その4文字が都道府県名。
無かったら、"????"を表示。
2回判定する必要があり、かなり、長い式になります。
=IF(NOT(ISERROR(VLOOKUP(LEFT(E30,3),PREFECTURE,1,0))),LEFT(E30,3),IF(NOT(ISERROR(VLOOKUP(LEFT(E30,4),PREFECTURE,1,0))),LEFT(E30,4),"????"))
ここで前項と逆に、候補のリスト項目が、住所の先頭にあるかを調べます。
あった場合は、それが都道府県名となり、1回の処理で済むことになります。
(処理的には、少々大変・・・)
下図@式は、EXCEL2003以前の数式
下図A式は、EXCEL2007以降で使える数式
IFERROR関数が使えることにより、数式がかなり簡素に記述できます。
{ }は配列数式を表す。
式の説明
ここでは、14行目に着目して考えます。
候補のリスト項目が、14行目の住所にあるかを調べます。K列B式
{=FIND(PREFECTURE,E14)}
の配列数式により、候補リストのそれぞれについて、住所の中(E14)に見つかるかを調べることができます。
この式で作成される配列がK列。
ほとんどが見つからず"VALUE!"となりますが、"東京都"の項目でみつかり、その位置(1文字目)が表示されています。
これでは、都道府県名がわからないので、エラーの場合は空白、見つかった場合は、リストの街頭号目を表示するようにします。
L列C式
{=IF(ISERROR(FIND(PREFECTURE,E14)),"",PREFECTURE)}
さて、この空白行の中にある1つの空白でない行の項目(ここでは"東京都")を取り出すの方法。
「この範囲内で最初に見つかる空白でない行の値を取り出す」と同じ意味になります。
ここでは、VLOOKUP関数と、ワイルドカード「?*」を使用します。
「?*」は、「空白以外の1文字が1個以上ある」の意味
指揮をまとめると、D式
=VLOOKUP("?*",IF(ISERROR(FIND(PREFECTURE,E14)),"",PREFECTURE),1,0)
となります。
めでたく、都道府県名が得られました。
都道府県名リスト
B2:B48 には"
PREFECTURE" の名前が付けてあります。
リンクリスト