ITライター 立山秀利
ExcelのLEFT関数とMID関数を使うと、文字列から指定した文字を抽出できる。さらにFIND関数を組み合わせると、条件に応じて文字を抽出することも可能だ。今回は各関数の基本的な使い方、活用例として氏名から姓と名を分ける方法を解説する。
Excelには文字列の中から文字を抽出するための関数が数多く用意されている。その一つであるLEFT関数は、文字列の先頭から指定した数の文字を抽出する関数である。
----------------------------------------
=LEFT(文字列,文字数)
文字列 元の文字列
文字数 取り出す文字数
----------------------------------------
例えば、A1セルに「Orange」という文字列が入力されているとする。この文字列の先頭から2文字抽出して、B1セルに表示するには、LEFT関数を用いて次のような数式を入力すればよい。
----------------------------------------
=LEFT(A1,2)
----------------------------------------
(画像をクリックすると拡大表示します)
MID関数は文字列の指定した場所から、指定した数の文字を抽出する関数である。
----------------------------------------
=MID(文字列,開始位置,文字数)
文字列 元の文字列
開始位置 取り出しの開始位置
文字数 取り出す文字数
----------------------------------------
引数「開始位置」は先頭を1とする数値で指定する。
A1セルに「Orange」が入力されている場合、先頭から2文字目から3文字を抽出して、B1セルに表示するには、MID関数を用いて次のような数式を入力すればよい。
----------------------------------------
=MID(A1,2,3)
----------------------------------------
(画像をクリックすると拡大表示します)
両関数に加えて、FIND関数を組み合わせると、指定した文字を区切りとして抽出できる。FIND関数は指定した文字の位置を検索する関数である。検索対象の文字列の中で何文字目に位置するのか、数値として求められる。
----------------------------------------
=FIND(検索文字列,対象,開始位置)
検索文字列 検索する文字列
対象 検索対象となる文字列
開始位置 検索の開始位置
----------------------------------------
引数「開始位置」は先頭を1とする数値で指定する。省略すると1が指定されたと見なされる。
A1セルに「Orange」が入力されている場合、「r」という文字が先頭から何文字目にあるのか検索し、B1セルに表示するには、FIND関数を用いて次のような数式を入力すればよい。
----------------------------------------
=FIND("r",A1)
----------------------------------------
先頭から検索するので、引数「開始位置」は省略している。文字「r」は「Orange」の先頭から2文字目にあるので、2という数値が求められる。
(画像をクリックすると拡大表示します)
これら3つの関数の組み合わせの実例として、今回は姓と名が半角スペースで区切られたかたちで1つのセルに入力された氏名から、姓と名をそれぞれ別のセルに抽出する方法を紹介する。
今回は図4のように、姓と名が半角スペースで区切られたかたちで、氏名がA2~A6セルに入力されているとする。B2~B6セルに姓、C2~C3セルに名を取り出したいとする。
どのような数式を入力すればよいか、先頭行のB2セルで考えよう。まずはA2セルの氏名で、姓と名の区切りとなっている半角スペースの位置をFIND関数で調べる。すると、FIND関数は「FIND(" ",A2)」と記述すればよいことになる。
A2セルの「山田 圭子」では、姓が「山田」の2文字であるため、半角スペースの位置は3と検索される。半角スペースの1文字前が姓の最後の文字であり、その位置は姓の文字数と等しいことになる。従って、「FIND(" ",A2)-1」をLEFT関数の引数「文字数」に指定すればよい。引数「文字列」には、氏名が格納されたA2セルを指定する。
----------------------------------------
=LEFT(A2,FIND(" ",A2)-1)
----------------------------------------
これでB2セルに姓が抽出される。この数式をB6セルまでコピーすると、各セルに姓が抽出される。1文字でも2文字でも3文字の姓でも抽出することができる。
(画像をクリックすると拡大表示します)
次は名を抽出する数式を先頭行のC2セルで考えてみる。半角スペースの位置は姓と同様に、「FIND(" ",A2)」で求められる。名の開始位置は半角スペースの1文字後ろなので、「FIND(" ",A2)」に1を足せば求められる。
そして、MID関数を用いて、氏名のA2セルを引数「文字列」に指定し、引数「開始位置」に「FIND(" ",A2)」+1」を指定する。引数「文字数」だが、多めの文字列を指定しておけば、その文字数以内で抽出できるようになっている。今回は10を指定するとする。
----------------------------------------
=MID(A2,FIND(" ",A2)+1,10)
----------------------------------------
これでC2セルに名が抽出される。この数式をC6セルまでコピーすると、各セルに名が抽出される。
(画像をクリックすると拡大表示します)
これら3つの関数の組み合わせなら、例えばハイフン区切りで入力された電話番号から市外局番を抽出するなど、様々な応用ができる。
また、Excelには他にも、文字列の末尾から指定した数の文字を抽出するRIGHT関数など、文字列から抽出するための関数がいくつか用意されている。
このようにLEFT関数とMID関数を使えば、文字列から任意の場所から任意の数だけ文字を抽出できる。さらにFIND関数と組み合わせれば、文字列から指定した条件で文字を抽出することも可能となるのだ。
立山秀利(たてやま・ひでとし)
カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。
(監修:日経BPコンサルティング)