『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【Excel】FINDとSEARCHで文字の位置を調べます

Excel の FIND関数と SEARCH関数は対象文字列の中から指定した文字を検索して、その位置を返します。両者の違いは英字の大文字と小文字を区別するかしないかという1点のみです。エクセルについてある程度習熟していれば FIND はおなじみの関数だと思いますが、応用範囲を広げるためには第3引数の使い方まで把握しておく必要があります。

【Excel】FIND関数

ExcelFIND関数

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

の形で使用し、[検索文字列] の先頭文字が [対象] のどの位置にあるかを得ます。3つめの引数では検索を開始する(左から数えた)文字位置を指定できます。ここでは “Kobato” という文字列を例に色々と試してみましょう。

=FIND("o","Kobato")

と入力した場合、「Kobato」から「o」の文字を探してその位置を返しますが、「Kobato」には2つの「o」が含まれていますね。このように検索対象が複数ある場合は、左側から数えて最初に見つかった位置を返してきます。今の例では「2」です。しかし第3引数を指定して

=FIND("o","Kobato",3)

と記述すると、検索開始位置が左から3番目の「b」なので、最初の「o」は飛ばされて、その次の「o」の文字位置「6」を返します。ちなみにFIND関数は大文字と小文字を区別するので、

=FIND("O","Kobato")

と入力してもエラーが返ってきます。

【Excel】SEARCH関数

冒頭にも説明したように、FIND関数とSEARCH関数の使い方はほとんど同じなので、ここでは繰り返しませんが、大文字と小文字を区別しないという例を1つだけ載せておきます。

=SEARCH("O","Kobato")

と入力すると小文字の「o」がある位置「2」を返します。
 
それではクイズです。セルB2に入力されているアルファベットの文字列「QIMXPEKOBATOJUFFIKQMEUPPE」から「KOBATO」という文字を見つけてね!
 
え? すぐに見つかった? ダメです! 目で見つけるのではなく、ちゃんとエクセル関数を使って「KOBATO」という文字を抜き出してくださいな! どんな関数を使うのかなー。制限時間は10秒ねー。
 
10、9、8、7、6、5、4、3 … たーいむあーっぷ! それでは解答です。
まず、FIND関数だけじゃどうしようもありませんね。

=FIND("KOBATO",B2)

としたところで、「KOBATO」という文字が始まる「 7 」という数値が返ってくるだけです。でもこの数字は何かに使えそうですね。そこで、「そうだ! 文字列を抜き出すMID関数があったぞ!」と思い出すわけです(ちょっと強引)。MID関数の記述様式は

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

ですから、開始位置にFIND関数を組込んで、

=MID(B2,FIND("KOBATO",B2),6)

とすればちゃんと「KOBATO」が返ってきます。

コメント

  1. あとりえこばと より:

    【ChatGPTにFIND関数について質問しました】
    [Q] ExcelのFIND関数について解説してください。
    [ChatGPT] ExcelのFIND関数は、指定された文字列中に検索したい文字列が出現する位置を返す関数です。FIND関数は、大文字と小文字を区別する点を除いて、SEARCH関数と似た機能を持っています。FIND関数の構文は以下の通りです。
     
    FIND(検索する文字列, 検索対象の文字列, [開始位置])
    ・検索する文字列: 検索したい文字列を指定します。
    ・検索対象の文字列: 検索を行う対象となる文字列を指定します。
    ・開始位置 (省略可): 検索を開始する位置を指定します。この引数を省略すると、検索は最初の文字から始まります。
     
    例えば、次のようなデータがあったとします。
    A1: “apple”
    A2: “orange”
    A3: “banana”
    この場合、FIND関数を使って「n」が出現する位置を調べるには、以下のような式を入力します。
    =FIND(“n”, A1)
    この式をA1セルに入力すると、文字列「apple」における「n」の位置である「5」が返されます。また、FIND関数は、検索対象の文字列が含まれていない場合には「#VALUE!」というエラーを返します。この場合、エラーを回避するために、IFERROR関数やIF関数などを組み合わせて使うことができます。