ダウンロード

都道府県名抽出


都道府県名の文字長を利用−4文字の県とそれ以外の都道府県
住所から候補を検索−住所文字を候補から検索−VLOOKUP
候補から住所を検索−候補を対象の住所から検索−配列数式
正規表現による検索−3または4文字目が"都道府県"のいづれか
サンプルファイルのダウンロード
リンクリスト

都道府県名の文字長を利用−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" の名前が付けてあります。







×
PageTop