見出し画像

【Google Spreadsheet】正規表現が使えてしまう、痒いところに手が届くREGEXEXTRACT関数

Excelと、もう遜色ないレベルまで達しているぞ.....。

最近、EXCELで出来る事は、ほぼ何でも出来るようなレベルまで追随しているGoogle Spreadsheet その中でも、使用頻度の高い関数が、REGEXEXTRACT関数です。

この関数は正規表現を使用して条件に満たすものを全て取り出す事が出来る関数です。分かりやすく言うとLEFT関数とかの超強力版。どういう時に役立つかというと、下記のような○○区だけを取り出したい場合。IF関数とLEFTとかを組み合わせて出来なくはないけれども、○区、〇〇区.....などパターン数だけ関数を記述する必要があります。ちょっと、面倒いです。

画像1

=REGEXEXTRACT(B2,"..+?区|.+?区")

"..+?区|.+?区" の部分がいわゆる正規表現というヤツで、文字列のパターンを指定すると上手い具合に抜き出してくれます。正規表現に関しては、どう書けばいいかがたくさん載っているので、ノンプログラマーであれば、覚える必要はないと思います。正規表現という引き出しの存在を覚えておけば、それで問題ないと思います。

これだけ覚えておけば、明日から役立つ

数字4桁: [0-9]{4}
文字列:.*県
複数:.*県|.*都|.*道|.*府
URL:https://.*com|https.//.*jp
メアド:.*@gmail.com|.*@icloud.com
電話:[0-9]{3}-[0-9]{4}-[0-9]{4}
前株:.*株式会社

参考になるサイト

画像2

また次のようなケース、社員IDなどの桁数が揃っていない場合や抽出される事を前提にされていない書き方で、余計な文字列が入っている場合REGEXEXTRACT関数が大活躍してくれるのである(←しっかし....呼びにくい、何て読むんだろう、レグエクスエクトラクト?レゲックス....?)

Regular Expression Extract.......これの省略形みたいですね。

=REGEXEXTRACT(B7,"[0-9]{2,5}")

また実際の実務で遭遇したのが見積書などの後ろに顧客番号が入っており、あとから、その部分を抜き出してVLOOKUP関数を使いたいといったケース

画像3

=REGEXEXTRACT(B13,"[0-9]{2,5}.pdf$")

後ろがpdfで終わる文字列を検索して数字だけを抜き出すみたいな事が出来ます!!便利。抜き出したものを最終的にSUBSTITUTE関数と組み合わせて.pdfを消去

結構これが便利で、アレどうやって書くんだっけかなぁと過去のシートを探す事が多かったので、まとめてみました。どこかで皆さんの参考になれば幸いです。

顧客リストの中から、アルファベットやカタカナ表記の外国人顧客だけを抽出したい場合。

=ARRAYFORMULA(IFERROR(REGEXEXTRACT(B2:B,"[A-Z].*|[ァ-ヶー].*"),""))

Zoomの招待のコピーから、URL、ミーティングID、パスワードを抽出する方法

スクリーンショット 2020-06-20 13.01.55

URLを抽出する方法

=REGEXEXTRACT(A2,"https://zoom.us/.*")

IDを抽出する方法

=SUBSTITUTE(REGEXEXTRACT(A2,"ミーティングID: .*"),"ミーティングID: ","")

パスワードを抽出する方法

=SUBSTITUTE(REGEXEXTRACT(A2,"パスワード: .*"),"パスワード: ","")

GASと組み合わせで、自動挿入を実現

REGEXREPLACE関数もなかなか便利です。

スクリーンショット 2020-05-23 9.37.40

=ARRAYFORMULA(IFERROR(REGEXREPLACE(B2:B,"株式会社|合同会社|, LTD.|CO.,LTD.|Co., Ltd.|Inc.|K.K.",""),""))

こちらは一致した語句を消すというもの。他にも、REGEXMATCH関数があります。こちらはIF文以外の組み合わせで使う事は、まずないです。


この記事が気に入ったらサポートをしてみませんか?