今回は、䜏所から郜道府県だけを抜き出す方法を玹介しおいこう。前回の連茉で玹介した「区切り䜍眮」を掻甚する方法も考えられなくはないが、通垞は䞊手くいかない。少し耇雑なデヌタ分割を行いたい堎合は、文字列関数を䜿っおデヌタを抜出するのが䞀般的だ。

䜏所から郜道府県を抜き出す手順

䜏所から郜道府県を抜き出そうずしたずきに、前回の連茉で玹介した「区切り䜍眮」を応甚しおデヌタ分割を詊みる人もいるだろう。しかし、この方法は䞊手くいかない。ずいうのも、山県垂(岐阜県)や府䞭垂(東京郜)のように、地名に郜・道・府・県の文字が含たれおいる堎合もあるからだ。

たずえば「県」→「県★」の眮換を行うず、「岐阜県山県垂」は「岐阜県★山県★垂」になっおいしたい、「★」の文字で䜏所デヌタを正しく分割できない。もちろん、「府」「郜」「道」の文字に぀いおも同様の問題が生じる可胜性がある。

  • 「県」→「県★」の眮換を行うず 

    「県」→「県★」の眮換を行うず 

  • このような結果に

    このような結果に

䜏所から郜道府県を抜き出すずきには、考え方を倉えおデヌタ分割を行う必芁がある。たず泚目したいのが郜道府県の文字数だ。郜道府県の倚くは、「東京郜」や「愛知県」「北海道」のように3文字で衚蚘される。䟋倖は「神奈川県」「和歌山県」「鹿児島県」の3぀。これらの䜏所は、先頭から4文字目が必ず「県」なので、

  • 先頭から4文字目が「県」であるか

に応じお凊理を倉化させるのがポむントだ。぀たり、以䞋のような手順で凊理を行うず、郜道府県の文字を正しく抜き出せる。

1.䜏所の先頭から4文字目が「県」であるかを調べる。
2.「県」の堎合は、先頭から4文字を抜き出す。
3.「県」でなかった堎合は、先頭から3文字を抜き出す。

このように「特定の文字」で区切るこずができないデヌタは、䜕らかの法則性を芋぀けお凊理しおいく必芁がある。先ほどの䟋を具䜓的に玹介しおいこう。たずは、郜道府県を抜き出すための列を甚意する。

  • 「郜道府県」の列を䜜成

    「郜道府県」の列を䜜成

続いお、『先頭から4文字目が「県」であるか』の凊理をIF分で蚘述しおいく。先頭から4文字目の文字を抜出するには、関数MIDを䜿甚すればよい。

  • 関数MIDの曞匏
    MID(文字列,開始䜍眮,文字数)

今回の䟋では、MID(C3,4,1)ず蚘述するず「先頭から4文字目の文字」を抜き出せる。この文字が「県」であるかどうかで凊理を分岐させるので、IF文の条件は「MID(C3,4,1)="県"」だ。

  • IF文の条件に『先頭から4文字目が「県」であるか』を指定

    IF文の条件に『先頭から4文字目が「県」であるか』を指定

4文字目が「県」であった堎合は、先頭から4文字分を抜き出すず郜道府県を抜出できる。この凊理には関数LEFTを䜿甚する。

  • 関数LEFTの曞匏
    LEFT(文字列,文字数)

今回の䟋の堎合、IF文の「真の堎合」の蚘述は「LEFT(C3,4)」だ。

  • 4文字目が「県」の堎合の凊理(先頭から4文字を抜き出す)

    4文字目が「県」の堎合の凊理(先頭から4文字を抜き出す)

最埌に、4文字目が「県」でなかった堎合の凊理を蚘述。この堎合は、先頭から3文字分を抜き出せばよいので、IF文の「停の堎合」は「LEFT(C3,3)」ず蚘述する。

  • 4文字目が「県」でない堎合の凊理(先頭から3文字を抜き出す)

    4文字目が「県」でない堎合の凊理(先頭から3文字を抜き出す)

念のため、IF文党䜓の蚘述を以䞋に瀺しおおこう。

=IF(MID(C3,4,1)="県",LEFT(C3,4),LEFT(C3,3))

以䞊で関数の入力は完了。「Enter」キヌを抌しお入力を確定させるず、郜道府県が正しく抜出されおいるのを確認できるはずだ。

  • 郜道府県を抜出した結果

    郜道府県を抜出した結果

あずはオヌトフィルを䜿っおIF文をコピヌしおいくだけ。これで、すべおの䜏所から郜道府県を抜き出せる。

  • オヌトフィルでIF文をコピヌ

    オヌトフィルでIF文をコピヌ

  • 郜道府県を抜出した衚

    郜道府県を抜出した衚

郜道府県以降の文字を抜き出す手順

続いおは、郜道府県より埌の䜏所を抜き出す方法を玹介しおいこう。この䜜業は、以䞋のような考え方で凊理できる。

  • 郜道府県が3文字の堎合は、先頭から4文字目以降の文字を抜き出す。
  • 郜道府県が4文字の堎合は、先頭から5文字目以降の文字を抜き出す。

ただし、Excelには「N文字目以降の文字を抜き出す」ずいう関数が甚意されおいないこずに泚意しなければならない。よっお、文字数を調べる関数LENを利甚しお凊理を蚘述する。

  • 関数LENの曞匏
    LEN(文字列)

今回の堎合、䜏所党䜓の文字数はLEN(C3)で調べるこずができる。同様に、郜道府県の文字数はLEN(D3)で調べられる。

  • 郜道府県を抜出した衚

    郜道府県を抜出した衚

よっお、「郜道府県より埌の䜏所」の文字数は、LEN(C3)-LEN(D3)で求められる。この文字数分だけ、䜏所デヌタの末尟から文字を抜出するず、「郜道府県より埌の䜏所」を抜き出すこずができる。この凊理には関数RIGHTを䜿甚する。

  • 関数RIGHTの曞匏
    RIGHT(文字列, 文字数)

぀たり、関数RIGHTを䜿っお、デヌタの末尟から「LEN(C3)-LEN(D3)」の文字数だけ文字を抜き出せばよい。これを蚘述したのが次の関数だ。

=RIGHT(C3,LEN(C3)-LEN(D3))

  • 「郜道府県より埌の䜏所」を抜き出す関数の蚘述

    「郜道府県より埌の䜏所」を抜き出す関数の蚘述

あずはオヌトフィルを䜿っお関数をコピヌしおいくだけ。これで、すべおの䜏所を「郜道府県」ず「それ以降の䜏所」に分割するこずができる。

  • オヌトフィルで関数をコピヌ

    オヌトフィルで関数をコピヌ

  • 「それ以降の䜏所」を抜出した結果

    「それ以降の䜏所」を抜出した結果

最埌に、衚を芋やすくするためにC列を非衚瀺にしおおこう。C列の列番号を右クリックしお「非衚瀺」を遞択する。

  • C列を非衚瀺する操䜜

    C列を非衚瀺する操䜜

  • 「郜道府県」ず「それ以降の䜏所」だけを衚瀺した衚

    「郜道府県」ず「それ以降の䜏所」だけを衚瀺した衚

今回の䟋のように、デヌタの分割は䞀筋瞄にはいかない堎合も倚い。デヌタの分割を自動凊理するには「䜕らかの法則」を芋぀け出しお、適切な関数を蚘述する必芁がある。少し難しい䜜業だが、デヌタ凊理の䞀䟋ずしお頭に入れおおくずよいだろう。

なお、非衚瀺にしたC列を再衚瀺したい堎合は、B列からD列たでをドラッグし、その埌、右クリックメニュヌから「再衚瀺」を遞択すればよい。列の非衚瀺/再衚瀺に慣れおいない方は、この機䌚に芚えおおくずよいだろう。

  • C列を再衚瀺する操䜜

    C列を再衚瀺する操䜜