いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)メールアドレスを@の前後に分割する

 Googleスプレッドシートでメールアドレスの文字列を「@」の前後に、つまりユーザー名とドメインに分割して取得する方法です。

  • SPLIT関数を使ってメールアドレスをユーザー名とドメインに分割することができます。
  • REGEXEXTRACT関数を使う方法もあります。

手順

1つの式だけで分割する場合

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

 B3セルとB4セルにメールアドレスが記録されています。
 これらをそれぞれ別の関数を使って分割するものとします。
 
 C3セルとC4セルにそれぞれ次のような式を入力します。

 C3,C4セル

=SPLIT(B3,"@")
=REGEXEXTRACT(B4,"(.+)@(.+)")

 SPLIT関数の方は、「@」を区切り文字列としてメールアドレスを分割するものです。
 REGEXEXTRACT関数の方は少し長いですが、この関数でも文字列を複数に分割できます。2か所ある「.+」は「@」の前後にある1文字以上の文字列を表しますが、それぞれカッコで囲むことで「@」を抽出の対象から除外するとともに、ユーザー名とドメインを別々に抽出することができます。
 

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

 結果はこうなります。

ユーザー名とドメインをそれぞれ別の式で抽出する場合

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

 サンプルは上記の例と同じですが、ここではユーザー名とドメインをそれぞれ別の式で抽出します。
 どちらか一方だけ必要な場合に対応するための例です。

 C3,D3,C4,D4セル

=INDEX(SPLIT(B3,"@"),1)
=INDEX(SPLIT(B3,"@"),2)
=REGEXEXTRACT(B4,"(.+)@")
=REGEXEXTRACT(B4,"@(.+)")

 
 C3,D3セルでは、SPLIT関数でアドレスを分割し、さらにINDEX関数を使って一方を抽出しています。第2引数を1にすればユーザー名を、2にすればドメインを抽出できます。
 D3,D4セルではやはりREGEXEXTRACT関数を用いています。第2引数を「(.+)@」とすることで「@」の前にあるユーザー名を、「@(.+)」とすることで「@」の後にあるドメインを抽出できます。
 

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

 結果はこうなります。
 出力としては最初の例と全く同じです。