(Gスプレッドシート)住所から都道府県を抽出する

 Googleスプレッドシートで、関数を使って住所から都道府県名を取り出す方法についてです。

  • REGEXEXTRACT関数やLEFT関数による方法で、住所から都道府県名を取り出すことができます。

手順

REGEXEXTRACT関数による方法

 正規表現にマッチする文字列を抽出するREGEXEXTRACT関数を使う例です。

f:id:accs2014:20190512171610p:plain:right:w500

 B3:B15にさまざまな住所が記されています。ただしB12以降は「都道府県名が1文字」「都道府県名が4文字」「空白」「都道府県を含まない」の例です。
 C3セルに下記のような式を入力し、下方にコピーしています。

=REGEXEXTRACT(B3,".{2,3}?[都道府県]")

 「?」(直前の一文字を省略可とする)を省略すると(大抵うまくいきますが)府中市のような例で微妙に間違えますので注意が必要です。 
 なお、ARRAYFORMULA関数を使って式のコピーを省略することもできます(以下の例でも同様)。
 

f:id:accs2014:20190512171602p:plain:right:w500

 同じ関数を使った別の例です。
 C3セルに下記のような式を入力し、下方にコピーしています。

=REGEXEXTRACT(B3,"..+?[都道府県]")

 基本的に上記の例と同じ結果になっていますが、C13セル(都道府県名が4文字以上)で違いが出ています。

LEFT関数による方法

 LEFT関数を用いて住所の冒頭から3文字ないし4文字を抽出します。
 Excelでも常用される方法です。

f:id:accs2014:20190512171554p:plain:right:w500

 C3セルに下記のような式を入力し、下方にコピーしています。

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

 これもかなり簡略した考え方ですが、4文字目が「県」なら(神奈川県、和歌山県、鹿児島県に該当)4文字を、そうでなければ3文字を抽出するというわけです。
 REGEXEXTRACT関数の例と違ってC12以降がエラーになりません。
 なお「=LEFT(B3,3+(MID(B3,4,1)="県"))」とすればもっと短くできますが、端折りすぎの感もあります。

市区町村以下の抽出について

 都道府県名を抽出できればあとはSUBSTITUTE関数を使って残りの部分(市区町村以下)を抽出することができますが、REGEXEXTRACT関数を使う場合は単独で分割して抽出することが可能です。詳しくは次の記事で触れています。

www.officeisyours.com