【Excel講師の仕事術】自己流のエクセル、卒業しませんか? この連載では、エクセルを操作するときの「ルール」を決めることで、ミスを減らして業務を効率化していく仕事術を解説します。

ルール 38
文字列操作関数は組み合わせて使う
データの規則性を見つければあらゆる抽出が可能に

使用頻度の高い5つの関数をマスターする

「あるデータ内のこの文字だけ取り出したい」というシーンは、業種を問わずよく遭遇するものです。そのようなときに活躍するのが、Excelの文字列操作関数です。とりわけ、顧客名簿などのデータから一部の文字を取り出すときに重宝します。

こうしたデータ抽出は手入力では絶対にミスをしますし、膨大な時間がかかります。しかし、文字列操作関数に習熟していれば、一見イレギュラーに見えるデータからも規則性を発見し、それを折り込んだ数式を作成することで大幅な時短が可能です。

文字列操作関数の中でも、使用頻度が高いのが次の5つです。

  • LEFT(レフト)関数
  • RIGHT(ライト)関数
  • MID(ミッド)関数
  • LEN(レン)関数
  • FIND(ファインド)関数

1つ1つの機能は単純で、単体での使用で解決できることはあまりありませんが、組み合わせて使うことで威力を発揮します。本記事では、これら5つの文字列操作関数を覚え、組み合わせの基本的なロジックを理解することをルールとして挙げたいと思います。

LEFT関数

文字列の左端から何文字かを取り出します。構文は以下の通りで、引数「文字列」では元の文字列のセル、「文字数」では取り出したい文字数を指定します。使用例では「東京都港区赤坂X-X-X」という住所の左から3文字分を取り出しています。


=LEFT(文字列,文字数)


LEFT関数の使用例

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

RIGHT関数

文字列の右端から何文字かを取り出します。左と右の違いだけで、使い方はLEFT関数と同じです。使用例では住所の右から7文字分を取り出しています。


=RIGHT(文字列,文字数)


RIGHT関数の使用例

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

MID関数

文字列の指定した位置から何文字かを取り出します。第2引数の「開始位置」から第3引数の「文字数」分を取り出す形です。使用例では4文字目の「港」から2文字分を抽出しています。


=MID(文字列,開始位置,文字数)


MID関数の使用例

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

LEN関数

文字列の文字数を半角全角を問わず求めます。引数は文字列があるセルの指定だけです。使用例での結果は「12」となります。


=LEN(文字列)


LEN関数の使用例

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

FIND関数

文字列の位置を調べます。引数「検索文字列」では位置を調べたい文字列を、「対象」では検索文字列が含まれる文字列があるセルを指定します。また「開始位置」では、対象の何文字目から検索を開始するかを指定します。 使用例では「区」という文字が、対象の文字列の先頭から数えて何文字目にあるかを求めています。結果は「5」となります。


=FIND(検索文字列,対象,開始位置)


FIND関数の使用例

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

データの規則性に従って関数を組み合わせる

LEFT/RIGHT/MID関数は、取り出したい文字数が一定であれば単体で使えるのですが、実際には不揃いで、上手くいかないものです。そこで組み合わせるのがLEN/FIND関数となります。

例えば、LEFT関数とFIND関数と一緒に使えば、文字列の左端から特定の文字が含まれる位置までを取り出せます。また、LEN関数で求めた全体の文字数からFIND関数で求めた文字数を引けば、RIGHT関数で指定する右端からの文字数を計算可能です。

練習問題として、1つのセルに入力された氏名を、5つの関数を駆使して「姓」と「名」に分けてみましょう。以下の名簿の「氏名」列には、姓と名の間に半角スペースが入っています。

文字列操作関数で姓と名に分ける

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

この半角スペースを目印にすれば、FIND関数で半角スペースまでの文字数を求めることで、氏名の姓に応じて、LEFT関数で抽出する文字数を自動的に調整できます。名簿の1行目にある「河上 奈々」さんの姓を抽出する数式は、以下のように表せます。

=LEFT(C3,FIND(" ",C3,1)-1)

「河上 奈々」さんの場合、半角スペースは3文字目にあります。よって、FIND関数の結果は「3」となるのですが、それではLEFT関数が半角スペースまで含めて抽出してしまいます。

FIND関数の結果から「-1」するところまでをLEFT関数の第2引数にすることで、「河上」だけを正しく取り出せます。

今度は名を抽出します。「河上 奈々」さんの場合、LEN関数で求めた全体の文字数は「5」、FIND関数で求めた半角スペースの位置は「3」になります。よって、5-3=「2」が名の文字数です。

この文字数をRIGHT関数で指定すれば、すべての氏名に自動的に対応する形で、名だけを抽出できるわけです。数式で表すと以下のようになり、姓の数式とともにオートフィルすれば完成です。

=RIGHT(C3,LEN(C3)-FIND(" ",C3,1))

姓と名を取り出した結果

エクセルで文字を抽出するのに必要な、5つの文字列操作関数の使い方【Excel講師の仕事術】

このようにデータの規則性を発見し、文字列操作関数を組み合わせることで、あらゆるデータの抽出が可能となります。ただ、文字列操作関数の数式は長くなりがちなので、どういうロジックで動作しているのかをコメントで残すといいでしょう。

まとめ
  • まずは5つの文字列操作関数を覚える
  • データの規則性に注目して組み合わせるのがコツ

これも大事!フラッシュフィルは確実性に欠ける

文字列の抽出は、Excel 2013以降で使える「フラッシュフィル」でも可能です。データの規則性をExcelが理解し、それに従って以降のデータを自動入力する機能で、リボンの[データ]タブから実行できます。ただ、「姓と名の間に半角スペースがある」といった分かりやすい規則性がなければ動作せず、確実性には欠けます。「上手くいけばラッキー」くらいに留めておくのがいいでしょう。