- 公開日:
- 更新日:
Excelで特定の文字列を抽出する方法
Excelで文字列から特定の文字列を取り出す方法をご紹介します。関数を使えば文字列の先頭から何文字といった抽出が簡単にできます。
今回は文字列を抽出するLEFT関数、RIGHT関数、MID関数の基本的な使い方と、さらにFIND関数を組み合わせた複雑な抽出方法を解説していきます。
関数を使いこなしてぜひ自分の欲しい文字列を抽出してみましょう。
抽出したい文字数が固定の場合
特定の2文字を抽出したいなど取り出したい文字数が決まっている場合、取り出したい位置によって3つの関数を使い分けます。
文字列の先頭から抽出する場合はLEFT関数
左側から文字列を取り出すときは、LEFT関数を使います。
この関数は「=LEFT(文字列,[文字数])」で構成され、文字列の先頭から指定された数の文字を返します。[文字数]は省略することができ、その際は文字列の先頭1文字が出力されます。
B2セルに入力されている「ABCDEFG」という文字列から、先頭2文字を取り出してC2セルに表示する場合、C2セルに『=LEFT(B2,2)』と入力します。
文字列の先頭から2文字の「AB」がC2セルに抽出されました。
文字列の最後から抽出する場合はRIGHT関数
右側から文字列を取り出す場合は、RIGHT関数を使います。
この関数は「=RIGHT(文字列,[文字数])」で構成され、文字列の末尾から指定された数の文字を返します。[文字数]は省略することができ、その際は文字列の最後から1文字が出力されます。
B2セルに入力されている「ABCDEFG」という文字列の最後から2文字を取り出してC2セルに表示する場合、C2セルに『=RIGHT(B2,2)』と入力します。
文字列の最後から2文字の「FG」がC2セルに抽出されました。
文字列の中央から抽出する場合はMID関数
文字列の途中から文字列を取り出す場合は、MID関数を使います。
この関数は「=MID(文字列,開始位置,文字数)」で構成され、文字列の指定された位置から、指定された数の文字を返します。
B2セルに入力されている「ABCDEFG」という文字列の先頭から3番目以降の2文字を取り出してC2セルに表示する場合、C2セルに『=MID(B2,3,2)』と入力します。
文字列の3番目から2文字の「CD」がC2セルに抽出されました。
抽出したい文字数が変動する場合
上記では抽出する文字数は固定でしたが、条件にあった文字列を抽出したい場合、文字数は固定とはかぎりません。今回はダミーのメールアドレスを例にして抽出する文字数が異なる場合を説明していきます。
メールアドレスや電話番号、住所など抽出したい文字列に共通する文字がある場合、FIND関数を使います。共通する文字というのはメールアドレスなら「@(アットマーク)」、電話番号なら「-(ハイフン)」になります。最初にFIND関数の使い方をみていきましょう。
上記のようなメールアドレスのデータを例にFIND関数の使い方を説明していきます。
FIND関数は「=FIND(検索文字列,対象,[開始位置])」で構成され、指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。
[開始位置]は省略することができ、その際は1を指定したとみなされます。
上図の例で、B2セルの文字列の中にある「@」の位置を出力します。C2セルに『=FIND("@",B2)』を入力します。
C2セルに@の左端からの位置である「5」が出力されました。
オートフィルを使用してC2セルの右下を下まで引っ張ると他の行の計算も便利です。各行の@の位置を出力することができました。
それでは、上記で説明したLEFT関数、RIGHT関数、MID関数とFIND関数を組みわせることで文字数が変動する場合でも抽出する方法を解説していきます。
左から検索文字までの文字列を抽出する
上図の例は、文字列の先頭から「@」までの文字列を抽出したいケースになります。この場合、LEFT関数だけですと文字数を算出することができません「=LEFT(B2,?)」。
このような場合、LEFT関数で指定する文字数に検索文字である「@」までの位置から1を引くことで文字数を算出することができます。
C2セルに『=LEFT(B2,FIND("@",B2)-1)』と入力します。
C2セルに左端から@までの文字列「hoge」が出力されました。
オートフィルを使用してC2セルの右下を下まで引っ張ると他の行の文字列も抽出することができました。
右から検索文字までの文字列を抽出する
上図の例は、文字列の末尾から「@」までの文字列を抽出したいケースになります。この場合、RIGHT関数だけですと文字数を算出することができません「=RIGHT(B2,?)」。
このような場合、全文字数から@までの位置を引くことでRIGHT関数で指定する文字数を算出することができます。
全文字数を求めるためには文字列の文字数を返す関数であるLEN関数を使います。@までの位置をFIND関数で求め、全文字数から引くと@以降の文字数が算出されます。
C2セルに『=RIGHT(B2,LEN(B2)-FIND("@",B2)』と入力します。
C2セルに右端から@までの文字列「example.com」が出力されました。
オートフィルを使用してC2セルの右下を下まで引っ張ると他の行の文字列も@以降を抽出することができました。
特定の範囲の文字列を抽出する
上図の例は、文字列の「@」以降から「.com」までの範囲の文字列を抽出したいケースになります。この場合、MID関数だけですと文字数を算出することができません「=MID(B2,?,?)」。
このような場合、開始位置と文字数の部分をFIND関数に置き換えることで算出することができます。
開始位置はFIND関数で求めてから1を足すと求められます。文字数は「.com」の「.」までの位置をFIND関数で求め、1を引きます。さらに@までの位置を引くことで文字数を算出できます。
C2セルに『=MID(B2,FIND("@",B2)+1,FIND(".",B2)-1-FIND("@",B2))』と入力します。
C2セルに「@」以降から「.com」までの範囲の文字列「example」が出力されました。
オートフィルを使用してC2セルの右下を下まで引っ張ると他の行の文字列も抽出することができました。