Googleスプレッドシートで特定の文字列から特定の文字列まで抽出する方法【みなとやの制作ハック】

author

湊屋 佐千子
企画・統括本部 クリエイティブ統括部 広告制作部 コンテンツプロデュース課 ▼詳細

Googleスプレッドシートには、正規表現を用いて文字列を抽出できる「REGEXEXTRACT」という関数があります。本記事ではREGEXEXTRACT関数を活用して特定の文字列から特定の文字列まで抽出する方法をご紹介します。

活用シーン

例えば業務の中で、以下のような処理を行いたい機会があると思います。

● 苗字と名前を半角スペースで区切りたい
● ブランド名と店舗名を半角スペースで区切りたい
● メールの件名から特定の情報を抽出したい など

Googleスプレッドシートに記入されたテキストから特定の文字列を抽出したい場合に、手作業で置換をしたり、SUBSTITUTE関数で置換したり、FIND関数やLEFT関数を入れ子にして抽出していませんか?REGEXEXTRACT関数なら、より簡潔な数式で抽出できます。

使用手順

構文は以下の通りです。

=REGEXEXTRACT(テキスト, 正規表現)

『テキスト』はセルを参照するか、ダブルクォーテーション(“)で囲って文字列を抽出したいテキストを指定します。

=REGEXEXTRACT(A2, 正規表現)
=REGEXEXTRACT(“あいうえおかきくけこ”, 正規表現)

次に、『正規表現』に検索したい文字列を表す正規表現をダブルクォーテーション(“)で囲って指定します。

正規表現とは文字列のパターンを記号の組み合わせで表現するための方法で、GoogleスプレッドシートではRE2構文という正規表現をサポートしています。ここで指定した正規表現と一致した文字列が『テキスト』から抽出されます。

以下のような正規表現があり、すべてのRE2の正規表現はこちらのGitHubで確認できます。

. 任意の1文字
//a/@href 0回以上の繰り返し
+ 1回以上の繰り返し
? 0~1回の出現
{n,m} n回以上m回以下の繰り返し
^●● 先頭に●●がある文字列
●●$ 末尾に●●がある文字列
[●] ●に一致する文字(複数指定可)

一見、難しそうに感じるかもしれませんが、とても便利なので、一度以下の数式を試してみてください。

今回は以下のようにブランド名と店舗名、括弧内に店舗Noが含まれる文字列から、それぞれの項目を抽出してみます。

● ブランド名を抽出する

まず、C3セルに以下の数式を追加して先頭から半角スペースまでを抽出します。

=REGEXEXTRACT(B3,”..+?[ ]“)

すると、C列にブランド名の「ドラッグストアA」のみが抽出されるかと思います。

● 店舗名を抽出する

次に、店舗名を抽出します。

D列に新たな数式を追加して抽出しても構いませんが、「REGEXEXTRACT」関数は括弧()で囲んで指定をすることで、一つの数式で複数キーワードを抽出できます。

以下の数式のように、先頭から半角スペースまでを指定する『..+?[ ]』を一つ目の括弧に、「店」までを抽出する『..+?[店]』を二つ目の括弧に入力します。

=REGEXEXTRACT(B3,”(..+?[ ])(..+?[店])“)

すると、D列に店舗名が抽出されるかと思います。

● 店舗No.を抽出する

最後にE3セルに以下の数式を記入して店舗No.を抽出します。数字のみ抽出する場合は以下の正規表現を使います。

=REGEXEXTRACT(B3,”[0-9]{1,3}“)

すると、E列に店舗No.の数字のみが抽出されるかと思います。

『{1,3}』は、1桁から3桁までの数字を抽出する意味です。桁数に応じて適宜変更してください。以下のように桁数が変わっても抽出できるようになります。

あとはCtrl+Dキーで数式をコピーすれば、B列すべての文字列からブランド名と店舗名、店舗No.を抽出できます。ARRAYFORMULA関数が使える方は配列化すれば、たった2つの数式ですべての行に反映することもできます。

● 区切り文字が複数存在する場合の対処法

例えば以下のように半角スペース以外に全角スペースも交じっているような場合、エラーが出てしまいます。

SUBSTITUTE関数などで置換してもいいのですが、REGEXEXTRACT関数の正規表現では『(一つ目の区切り文字|二つ目の区切り文字)』のように、パイプライン(|)で区切って入力することで、複数の条件を指定することもできます。

『..+?[ ]』を『..+?[( | )]』という正規表現に変更してみてください。

=REGEXEXTRACT(B5,”(..+?[( | )])(..+?[店])”)

全角スペースが混じっていた行のエラーが解消されました。

さいごに

いかがでしたか?最初は正規表現の意味が不明で、難しく感じると思います。

しかし上記の例のコピペから始めてみて、REGEXEXTRACT関数を使いこなせるようになると、SUBSTITUTE関数やFIND関数、LEFT関数などを入れ子にして組み合わせるよりも、より簡単に文字列の抽出ができるようになります。ぜひ使ってみてくださいね。

ディップは2019年3月に構造的な人手不足を解消する「labor force solution company」へと進化し、AI・RPA領域で新事業を開始したほか、社内でRPAやVBAのオンライン講座を開催するなど、社員が自身の業務を改善できるように取り組んでいます。

※プレスリリース
「構造的な人手不足を解消する“Labor force solution company”へ進化 ディップがAI・RPA領域で新事業を開始! ~新ブランドステートメントを策定~
https://www.dip-net.co.jp/news/175

私が所属するクリエイティブ統括部でも、RPAやVBA、Excelなどを積極的に活用して日々業務改善に取り組んでいます。業務改善に興味があるという方は、ぜひ以下の採用情報をご覧ください。

author

湊屋 佐千子

企画・統括本部 クリエイティブ統括部 広告制作部 コンテンツプロデュース課 RPA・Excel・VBAで求人広告クリエイティブの業務効率化に努めている人。オウンドメディアやWeb制作のフロントエンドも担当。Twitter(@mi_na_to_8)では定期的に業務ハックをつぶやいている。

関連記事一覧