Excel(エクセル)を使用して、「特定の文字から左(右)だけの文字だけを抽出したい」「特定の文字の前後を分けたい」と思ったことはありませんか?
そんな時に役立つのが、FIND関数(ファインド)です。
FIND関数は文字が先頭から何文字目かを調べる関数です。
別の関数と組み合わせて利用することで、特定の文字を抽出したり削除するなどに活用されることが多いです。
今回はFIND関数の使い方と、実務に役立つ事例を詳しく紹介します。
FIND関数(ファインド)とは?
FIND関数の読み方は、「ファインド関数」です。
英語「FIND」が「探す」という意味なので、FIND関数は指定した文字が左端から何番目にあるかを調べる関数です。
例えば、「東京都新宿区西新宿」という住所から「都」という文字が先頭から何文字目にあるか、といったことを調べることができます。
この場合は「3」文字目であることは目視で確認することができます。しかし、膨大なデータを処理したり、調べた文字の位置を使って、別のExcel操作を行う場合は大変です。
そんな時に役立つのがFIND関数です。
この記事では、FIND関数を使った以下の操作方法を分かりやすく紹介していきます。
FIND関数を使ったテクニック
1.左端から文字の位置を調べる
2.右端から文字の位置を調べる
3.特定の文字をキーに、一部の文字を抽出する
4.調べる文字が複数ある場合の対処方法
FIND関数の書式と引数
FIND関数の書式は以下のとおりで、3つの引数を指定する必要があります。
=FIND(検索文字列,対象,[開始位置])
引数のそれぞれの内容と入力例は、以下の参考にしてください。
第1引数「検索文字列」:位置を調べたい文字を指定します。直接文字を指定する場合は、ダブルクォーテーションで囲みます。(例:A3、”県”、”-”)
第2引数「対象」:どのセルから位置を調べたいか対象の文字列を指定します。(例:B3、”神奈川県横浜市”)
第3引数「開始位置」: 検索を開始する位置を指定します。 先頭の文字から検索する時は「1」を指定します。 省略した場合は、1 を指定したことになります。(例:1,2,3)
以降の見出しからは、このFIND関数の書式を使って、文字の位置を調べる方法を紹介していきます。
FIND関数で左(先頭)から何文字目かを調べる方法
FIND関数を使って、下の名前リストから空白スペースの位置が先頭から何文字目になるかを調べてみましょう。
手順1.FIND関数を第1引数「検索文字列」を指定
FIND関数を挿入します。全角の空白スペースを位置を調べたいので、第1引数「検索文字列」は「” ”」と入力します。半角スペースと全角スペースを間違わないようにしてください。
=FIND(" ",
手順2.FIND関数を第2引数「対象」を指定
次に、FIND関数を第2引数「対象」を指定します。B3セルの氏名から空白スペースの位置を調べたいので、B3セルをクリックします。
=FIND(" ",B3,
手順3.FIND関数を第3引数「開始位置」を指定
最後に、FIND関数を第3引数「開始位置」を指定します。文字の先頭から何番目の文字かを調べたいので、「1」と入力します。また、「1」であれば、省略してもOKです。
=FIND(" ",B3,1)
手順4.FIND関数を確定
Enterキーを押してFIND関数を確定させます。そうすると、「山田 太郎」の3文字目にスペースがあることが分かりました。下のセルにもFIND関数をコピペすれば、作業は完了です。
このように、FIND関数を使えば、特定のキーとなる文字が先頭から何番目にあるか調べることができます。
上の例では、スペースの位置を調べましたが、「県」という文字の位置を調べたければ、第1引数を「”県”」というように利用します。
FIND関数で一番右に現れる文字が何文字目かを調べる方法
1つのセルの中に調べたい文字が複数個存在する場合、FIND関数は一番左側の文字の位置を返します。
そのため、FIND関数を使う時、1つのセルに複数の文字が含まれる際は注意が必要です。
この見出しでは、セルに調べたい文字が複数ある場合、FIND関数で最後の文字の位置が左から何番目か調べる方法を紹介します。
結論からお伝えすると、以下の関数を貼り付けすれば、最後の文字の位置を把握することができます。
=FIND("〇",SUBSTITUTE(セル番号,"対象","〇",LEN(セル番号)-LEN(SUBSTITUTE(セル番号,"対象",""))))
”〇”:どんな文字でもOKです。調べるセル内に含まれていない記号(●や▲)などを使ってください。
セル番号:どのセルを調べるか指定します。
”対象”:どんな文字の位置を調べたいか指定します。
上記の関数は長いですが、関数の仕組みは以下の1~4の流れです。
1.SUBSTITUTE関数で対象の文字を削除(置換)して、元の文字列との長さと比較
2.対象の文字がN個含まれているか調べる
3.N番目の対象の文字を「〇」に置き換える
4.FIND関数で「〇」の位置を調べる
例えば、B3セルの「A123-45-6」という文字から最後のハイフン(-)の位置を調べるためには、以下の関数を使用します。
=FIND("〇",SUBSTITUTE(B3,"-","〇",LEN(B3)-LEN(SUBSTITUTE(B3,"-",""))))
そうすると、B3セルの「A123-45-6」の最後のハイフンの位置が「9」文字目であることが分かりました。下のセルに数式をコピーすればそれ以外の文字も調べることができます。
FIND関数を使った便利なテクニック集
FIND関数は文字の位置を調べるだけでなく、別の関数と組み合わせて一部の文字を抽出したり、セルごとに文字を分解する際に役立つ関数です。
この見出しからは、実務で活用できるFIND関数の使い方を4つ紹介します。
FIND関数/事例1.MID関数で特定の文字を抽出する方法
MID関数は、文字列の指定した開始位置から指定した文字数分の文字を抽出する関数です。
MID関数の構文と引数は以下のとおりです。
=MID(文字列,開始位置,抽出する文字数)
このMID関数とFIND関数を組み合わせることで、特定のキーとなる文字の前後の文字を抽出することができます。
今回は、下の表のように『鈴木 一郎(経理部)』といったデータを括弧「()」の文字をキーにして、「鈴木 一郎」と「経理部」に分ける、といった方法を紹介します。
手順1.2つの括弧が何文字目かを調べる
FIND関数を使って、文字を抽出するキーとなる『(』と『)』が左側から何文字目かを調べます。
=FIND("(",B3,1) =FIND(")",B3,1)
手順2.『(』より手前の文字を取り出す
右隣りの列に以下のMID関数を挿入し、FIND関数で調べた『(』の位置の1文字前までの文字を抽出します。
=MID(B3,1,(C3-1))
手順3.『(』と『)』に挟まれた文字を取り出す
さらに右隣りの列に以下のMID関数を挿入し、FIND関数で調べた『(』と『)』の開始位置の数値を使って、その間の文字を抽出します。
=MID(B3,C3+1,(D3-C3-1))
手順4.名前と部門の分解が完了
以上の作業により、B列の「名前&部門」の文字は、E列「名前」とF列「部門」に分解することができました。C列とD列が見栄え的に邪魔であれば、列を非表示にしてください。
このように、文字列に「(」「_」などの抽出するキーとなる文字があれば、文字の位置を調べるFIND関数とMID関数を組み合わせることで、自在に文字を抽出することが出来ます。
以下のリンク記事で、上記以外のさまざまな文字の抽出方法を紹介しているので、合わせて参考にしてください。
FIND関数/事例2.MID関数で特定の文字をダイレクトに抽出する方法
事例1で紹介した方法は、セルを分けてFIND関数とMID関数を利用し、文字を抽出しました。
この2つの関数をまとめてダイレクトに文字を抽出することもできるので、その方法を解説します。
まず、「名前&部門」から「名前」だけを取り出します。
MID関数の第3引数「抽出する文字数」にFIND関数を挿入して、1文字目から「(」の1文字前までの文字を抽出します。
=MID(B3,1,FIND("(",B3,1)-1)
ちなみに、左側から文字を抽出するLEFT関数を使って、「=LEFT(B3,FIND("(",B3,1)-1)」としてもOKです。
続いて、「名前&部門」から「部門」だけを取り出すために、以下のMID関数を挿入すれば完成です。
=MID(B3,FIND("(",B3,1)+1,(FIND(")",B3,1)-FIND("(",B3,1)-1))
この関数の仕組みを説明します。
MID関数の第2引数「開始位置」にFIND関数を挿入して、「(」の1文字後ろから文字を抽出しようとしています。(青の数式)
MID関数の第3引数「抽出する文字数」にFIND関数を2つ挿入して、「(」と「)」の文字の位置の差を調べて、その差分だけの文字を抽出します。(緑の数式)
FIND関数/事例3.ワークシート名をセルに表示する方法
『MID関数』と『CELL関数』と『FIND関数』を組み合わせることで、ワークシート名をセルに表示させることができます。
CELL関数は、ファイルの保存先やファイル名などのセルの情報を表示させる関数です。
CELL関数で得たセルの情報から、MID関数とFIND関数を使って、ワークシート名だけをセルに表示させます。
以下の関数をコピーしてセルに貼り付けすると、ワークシート名を取得することが出来ます。
⇩貼り付け用
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,31)
以下の記事でこの数式の仕組みを詳しく紹介しているので、興味のある方は参考にしてください。
FIND関数/事例4.右端(末尾)から文字の位置を調べる方法
FIND関数で右端(末尾)から何文字目かを調べることもできます。
利用するのは、セルの文字数をカウントするLEN関数を利用します。
下のように、LEN関数で文字数の合計を算出し、その結果からFIND関数で調べた左からの文字数を引いて、「+1」を足せば、右端から「-」が何文字目なのかを表示できます。
=LEN(B3)-FIND("-",B3,1)+1
ただ、この方法を使用すると、調べたい文字がセル内に複数ある場合は、一番左側の文字が右側から何番目かを取得します。
もし、最後に現れる文字が右側から何番目かを調べたい場合は、上の見出しでも紹介したSUBSTITUTE関数を使って、以下の数式を挿入します。(※数式内の”〇”は、セル内で使っていない任意の記号)
=LEN(B3)-FIND("〇",SUBSTITUTE(B3,"-","〇",LEN(B3)-LEN(SUBSTITUTE(B3,"-",""))))+1
FIND関数とSEARCH関数の違いは?
FIND関数と似ている関数に、SEARCH関数があります。
SEARCH関数も指定した文字の位置を調べる関数で、書式と引数はFIND関数と同じです。
=SEARCH(検索文字列,対象,[開始位置])
FIND関数とSEARCH関数の1つ目の違いは、大文字と小文字を区別するかどうかです。FIND関数は大文字と小文字は区別されますが、SEARCH関数は区別されません。
FIND関数とSEARCH関数の2つ目の違いは、「*」や「?」のワイルドカード文字が使用できるかどうかです。FIND関数はワイルドカードを使用できませんが、SEARH関数は使用できます。