IFとISと文字列操作関数を使い
住所から都道府県名のみを抽出する


 今回は文字列を置き換えたり、変換したりする関数などを使って住所の都道府県と市町村区とを分割する方法についてご説明しましょう。電話番号の市外局番と市内局番を分割するのには、FIND関数で検索文字の位置を求めLEFTやRIGHT関数で文字列を抽出することができますが、住所から都道府県を抽出する場合、FINDで検索文字は1つしか指定できないため、県を検索文字とした場合、県が含まれない大阪府や京都府などの文字列に対して、数式のコピーを行なうと、エラー値が表示されてしまいます。そこで、IF関数を利用しセルの値がエラー値である場合という条件を設定し、そうである場合とそうでない場合、セルに表示させる値を設定する式をたてます。ここで条件式にはISERROR関数を利用します。この関数は、セルの値がエラー値かどうか調べてくれる関数。IF関数とIS関数、文字列操作関数で数式をたてれば、検索文字列が見つからなくてもエラー値を表示させずに正しく検索文字の位置を求めることができるのです。

今月の関数





対象となる値がエラー値かどうか調べる
情報関数
イズエラー
ISERROR関数
書式 =ISERROR(テストの対象 )
ISERRORとは検査セルのエラー値かどうかを調べる関数。ここではFIND関数で住所の頭4文字以内に「県」が含まれているかどうか調べ、IF関数と組み合わせ、都道府県名が3文字か4文字かを求めている。


文字列に含まれる文字数を返します
文字列操作関数
レン
LEN関数
書式 =LEN(文字列)
LEFT関数は左から、RIGHT関数は右から指定文字数分を抽出できる関数。これと文字列の文字数を出すLENとで、たとえば都道府県名の文字数から、住所の「市町村区」だけを抽出することができる。


文字列の指定された文字を別の文字に置き換える
文字列操作関数
サブスティチュート
SUBSTITUTE関数
書式 =SUBSTITUTE(文字列,検索文字列,置換文字列[,置換対象])
SUBSTITUTEは文字列を別の文字列に置き換える関数。ツールバーの [編集]→[置換] では、電話番号の市外局番のみを()で囲むといったことはできないが、この関数ならば文字列を頭から置換するので可能。



1 IF+IS関数で都道府県の位置を求める

住所から都道府県のみを抽出する場合、都道府県の文字数を求めLEFT関数で左から文字数分の文字列を抽出。その際、FIND関数で検索文字の位置を求めるが、検索文字が「県」だけではないため、エラー値が表示される。そこでIF関数でエラー値だった場合(都道府の場合)でもセルに値を表示させる式を設定。まず(1)新たに列を挿入し、D17を選択し(2)[関数の貼り付け] ダイアログからIF関数を選択。(3)「論理式」で(4)をクリック。





関数名ボックスの「その他の関数」からISERROR関数を選択。(5)「テストの対象」には、県を検索した結果がエラー値かどうかを調べる式を入れる。ここでボックスをクリックしたまま、(4)をクリック、FIND関数をネスト。(6)「検索文字列」には、"県"を入力、(7)「対象」には検索する文字が含まれている文字列を選択。県が都道府県ではなく市町村区名に含まれている場合もある。都道府県のみから県を検索するよう住所の先頭(左端)から4文字目以内(都道府県名は長くて4文字)から抽出する式をたてる。







(4)をクリック、LEFT関数をネスト。(8)「文字列」にはE5、(9)「文字数」に4と入力。(10)数式バーのFINDの位置をクリックしFIND関数に戻る。





(11)「開始位置」を1とし、(12)数式バーのIFの位置をクリック、IF関数に戻る。





(13)「真の場合」には、エラー値だった場合、セルに表示される文字列を入力するので、3と入力(左から4文字以内に県が現われない文字列でエラーの場合、都道府名で必ず3文字のため)、(14)「偽の場合」には、エラー値でない場合、県の位置を求めて入力するので、(15)を押し、(16)FIND関数を選択。





(17)「検索文字列」には゛県”、「対象」はE5、「開始位置」は1と入力し[OK]ボタン。を押す。




D17のセルに入った式は
=IF(ISERROR(FIND("県",LEFT(E5,4,1))),3,FIND("県",E5,1))

2 LEFT、RIGHT+LEN関数で住所を分散する

都道府県の文字数(検索文字の位置)を求めることが出きれば、LEFT関数で左から文字数分を抽出で都道府県のみが抽出。次に文字数を数えるLEN関数を使い、その文字から都道府県の文字数を引き、RIGHT関数で右からその次数分を抽出することで市町村区名が求められる。



E17のセルに入った式は
=LEFT(E5,D17)


F17のセルに入った式は
=RIGHT(E5,LEN(E5)-D17)

3 SUBSTITUTE関数でそれぞれ位置が異なる文字列を置き換える

電話番号の市外局番に()を表示させたい場合、最初の「0」を「(0」に、最初の「-」を「)」に置き換えればよい。ここでは置き換える文字列が複数あっても関数のネストを繰り返すことにより、簡単に求めることができるSUBSTITUTE関数を利用し求めた。





G17のセルに入った式は
=SUBSTITUTE(SUBSTITUTE(G5,0,"(0",1),"-",")",1)