住所データを操作する

名簿から都道府県名を取り出す

名簿から都道府県名を取り出すには、まずパターンを解析する必要があります。
日本の都道府県名は3文字か4文字です。

県以外が付くのは、

東京都
北海道
大阪府
京都府

の4都道府です。

また、4文字の県は、

神奈川県
和歌山県
鹿児島県

の3県だけで、それ以外は3文字の県名だということが分かります。

つまり、住所の先頭から4文字目が「県」であれば、先頭から4文字を取り出せばよいわけです。
「県」以外なら、都、道、府も含めて、先頭から3文字を取り出せばよいことになります。

文字列の指定した位置から文字を取り出す

文字列の指定した位置から指定した文字数だけ取り出すには、MID関数を使います。

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

そして、先頭から指定の文字数を取り出すには、LEFT関数を使います。

LEFT(文字列, 文字数)

  1. まず、わかりやすくするために、H列とI列の間に2列追加します。
  2. I2セルを選択します
  3. 関数を挿入します。
    設定するのは、「もし住所の4文字目が「県」ならば、先頭から4文字までを抜き出し、
    「県」でなければ先頭から3文字を抜き出す」という式です。
    判断をしますから、IF関数ですね。
    関数ボタンをクリックし、IF関数を選択します。
  4. IF関数の論理式のボックスをポイントし、
    名前ボックスから「その他の関数」を選択し、MID関数を選択します。
    「文字列」にはH2セル、「開始位置」を4、「文字数」に1を設定します。

    そして、数式バーの「IF」あたりをクリックして、ウィンドウをIFの引数に切り替え、
    「="県"」を追加して、式を完成させます。
  5. 次に「真の場合」のテキストボックスをクリックし、
    名前ボックスからLEFT関数を選択します。
    そして「文字列」にはH2セルを、「文字数」には4を入力します。
  6. もう一度、数式バーの「IF」あたりをクリックして、IFの引数ウィンドウを表示させ、
    「偽の場合」のテキストボックスをクリックし、
    名前ボックスからLEFT関数を選択します。
    そして「文字列」にはH2セルを、「文字数」には3を入力します。
  7. 最後に数式バーの「IF」あたりをクリックして、IFの引数ウィンドウを表示させ、
    図のようになっていれば〔OK〕を押して、完了です。

市区町村以下の取り出し

住所から市区町村以下の取り出すには、MID関数を使う方法と、REPLACE関数を使う方法があります。
まずMID関数を使う方法を見てみましょう。

MID関数を使う場合

先にも見たとおり、MID関数は、文字列の、指定の位置から、指定の文字数を抜き出す関数です。
しかし、住所の長さはまちまちですので、固定した数値を入れることはできません。
そこで全体の文字数を調べる必要が出てきます。
文字数を調べる関数が、LEN 関数です。

LEN(文字列)

文字列の住所を指定すれば住所の文字数がわかりますので、都道府県名が3文字なら、4文字目から住所の文字数-3を、 都道府県名が4文字なら、4文字目から住所の文字数-4を指定すれば、市区町村以下が取り出せます。
ここで注意するのは、開始位置が「県の次の文字位置」であることです。
間違えないようにしましょう。

  1. J2セルを選択します
  2. 関数を挿入します。
    設定するのは、「もし住所の4文字目が「県」ならば、住所の5文字目から住所の文字数-4文字を抜き出し、
    「県」でなければ住所の4文字目から住所の文字数-3文字を抜き出す」という式です。
    ここでも判断をしますから、IF関数ですね。
    関数ボタンをクリックし、IF関数を選択します。
  3. IF関数の論理式にのボックスをポイントし、
    名前ボックスから「その他の関数」を選択し、MID関数を選択します。
    「文字列」にはH2セル、「開始位置」を4、「文字数」に1を設定します。
    そして、数式バーの「IF」あたりをクリックして、ウィンドウをIFの引数に切り替え、
    「="県"」を追加して、式を完成させます。
  4. 次に「真の場合」のテキストボックスをクリックし、
    名前ボックスからMID関数を選択します。
    「文字列」にはH2セル、「開始位置」に5を入力します、
    そして「文字数」にキャレットを移し、
    名前ボックスから「その他の巻数」>「LEN」を選択し、文字列に「H2」セルを設定します。

    そして「MID」あたりをクリックして、ウィンドウをMIDの引数に切り替え、 「-4」を追加します。
  5. もう一度、数式バーの「IF」あたりをクリックして、IFの引数ウィンドウを表示させ、
    「偽の場合」のテキストボックスをクリックし、
    名前ボックスからMID関数を選択します。
    「文字列」にはH2セル、「開始位置」に4を入力します、
    そして「文字数」にキャレットを移し、
    名前ボックスから「LEN」を選択し、文字列に「H2」セルを設定します。
    そして偽の場合の「MID」あたりをクリックして、ウィンドウをMIDの引数に切り替え、 「-3」を追加します。
  6. 最後に数式バーの「IF」あたりをクリックして、IFの引数ウィンドウを表示させ、
    図のようになっていれば〔OK〕を押して、完了です。

REPLACE関数を使う

REPLACE関数は、[文字列]の[開始位置]から[文字数]分の文字列を[置換文字列]に置き換えて表示します。
置き換える文字に「ヌル(空文字)」を指定すれば削除することになります。

REPLACE(文字列, 開始位置, 文字数, 置換文字列)

  1. I2セルを選択します
  2. 関数を挿入します。
    設定するのは、「もし住所の4文字目が「県」ならば、先頭から4文字を消し、
    「県」でなければ先頭から3文字を消すという式です。
    判断をしますから、これもIF関数ですね。
    関数ボタンをクリックし、IF関数を選択します。
  3. IF関数の論理式のボックスポイントし、
    名前ボックスから「その他の関数」を選択し、MID関数を選択します。
  4. 「文字列」にはH2セル、「開始位置」を4、「文字数」に1を設定します。

    そして、数式バーの「IF」あたりをクリックして、ウィンドウをIFの引数に切り替え、
    「="県"」を追加して、式を完成させます。

  5. 次に「真の場合」のテキストボックスをクリックし、
    名前ボックスからREPLACE関数を選択します。
    「文字列」にはH2セルを、「開始位置」には1を、「文字数」には4を入力します。
    そして「置換文字列」には半角ダブルクォーテーションを2つ「""」忘れずに入れます。
  6. もう一度、数式バーの「IF」あたりをクリックして、IFの引数ウィンドウを表示させ、
    「偽の場合」のテキストボックスをクリックし、
    名前ボックスからREPLACE関数を選択します。
    「文字列」にはH2セルを、「開始位置」には1を、「文字数」には3を入力します。
    そして「置換文字列」には半角ダブルクォーテーションを2つ「""」忘れずに入れます。
  7. 最後に数式バーの「IF」あたりをクリックして、IFの引数ウィンドウを表示させ、
    図のようになっていれば〔OK〕を押して、完了です。
結果は同じですが、こちらのほうが引数が多い代わりに、関数自体は少なく済みます。
また、やっていることも直感的かもしれません。