いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)REGEXEXTRACT関数で文字列を複数のセルに分割して抽出する

 GoogleスプレッドシートでREGEXEXTRACT関数を使って文字列の抽出を行う場合に、文字列の各部分を複数のセルに分割して抽出することができます。

  • REGEXEXTRACT関数の第2引数で半角カッコ「( )」を複数用いることで、複数の部分を抽出して複数のセルに配置することができます。

手順

単純な例

f:id:accs2014:20190523225300p:plain:right:w450

 B3セルに5文字の文字列「こんにちは」が記録されています。
 これに対しC3セルに「=REGEXEXTRACT(B3,"(..)(...)")」と入力したところです。
 

f:id:accs2014:20190523225256p:plain:right:w450

 実行結果です。
 REGEXEXTRACT関数の第2引数を単純に「"....."」とすると5文字がそのまま抽出されますが、半角カッコで区切ることで2つのセルに分けて抽出されます。
 なお、「.」などの記号を半角カッコの外側に記した場合、抽出の条件としては用いられるものの抽出される対象からは外れます。例えば第2引数を「".(..)(..)"」とすれば最初の「こ」は抽出されず、「んに」「ちは」に分けて抽出されます。

都道府県と市区町村以下を分割する例

f:id:accs2014:20190522132023p:plain:right:w600

 B3:B11に各地の住所が記録されています。
 これに対し、C3セルに次のように入力します。

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

 第2引数を「"..+?[都道府県]"」とすることで都道府県名を抽出できるのは割と有名な方法ですが、半角カッコを使って第1の抽出対象としています。さらに、都道府県の文字より後に続く文字列を「.*」と表現し、これを半角カッコで囲むことにより第2の抽出対象として別個に抽出しています。

f:id:accs2014:20190522132020p:plain:right:w600

 実行結果です。
 都道府県の部分(最初の半角カッコ内に該当)がC3セルに、市区町村以下の部分(2番目の半角カッコ内に該当)がD3セルに分割して抽出されました。

f:id:accs2014:20190522132018p:plain:right:w650

 ARRAYFORMULA関数との併用も可能です。
 改めてC3セルに次のように入力してみます。

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

 

f:id:accs2014:20190522132015p:plain:right:w650

 実行結果です。
 一見複雑な抽出ですが、わずか1セルへの入力で済ませることができました。