更新日:、 作成日:

エクセル FIND 関数:文字列の位置を検索する

はじめに

エクセルの FIND 関数の使い方を紹介します。

FIND 関数は検索ワードが見つかった位置を取得します。

=FIND("A","ABC") のようにして、AABC から検索して 1 を取得できます。

=FIND("A","ABA",FIND("A","ABA")+1) のようにして、2 番目の A を検索して 3 を取得できます。

検索ワードが見つからないときはエラー #VALUE! になります。

大文字小文字を区別して検索します。ワイルドカードを使用できません。

大文字小文字を区別しないで検索するには「SEARCH 関数」を使用します。
文字列を検索する方法は「文字列やセルを検索する」をご覧ください。

FIND 関数の引数

FIND(検索ワード, 検索対象)
検索対象から検索ワードが最初に見つかった位置を取得します。

FIND(検索ワード, 検索対象, 開始位置)
検索対象開始位置から検索します。

引数「検索ワード」検索する文字列を指定します。スピル化
引数「検索対象」検索対象となる文字列を指定します。この文字列の中から引数「検索ワード」が最初に見つかった位置が取得されます。スピル化
引数「開始位置」省略できます。省略すると 1 が指定されます。
検索を開始する位置を指定します。最初の文字から検索するときは 1 を指定します。
スピル化

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

使い方

FIND 関数の使い方を紹介します。

1 文字の検索ワードを検索する

A をセル「B3」の検索対象から検索します。

=FIND("A",B3)
12

複数文字の検索ワードを検索する

複数文字の検索ワードを検索対象から検索します。

=FIND(B3,C3)
13

開始位置を指定して検索する

AA2A45 から開始位置を指定して検索します。

=FIND(B3,C3,D3)

検索ワードが空文字のときは開始位置を返します。

14

何番目を検索する

2 番目の AA2A4A から検索します。引数「開始位置」に最初に検索した 結果 + 1 を入力して、2 番目の検索ワードを検索できます。

=FIND(B3,C3)
=FIND(B3,C3,FIND(B3,C3)+1)
=FIND(B3,C3,FIND(B3,C3,FIND(B3,C3)+1)+1)

何番目を指定するには下記の「高度な使い方」をご覧ください。

15

高度な使い方

FIND 関数と他の関数を組み合わせた使い方などを紹介します。

改行を検索する

セル内の改行文字を入力するには「CHAR 関数」を使用します。CHAR(10) がセル内の改行文字です。

=FIND(CHAR(10),B2)

他にも「CHAR 関数」を使用して、タブ文字など特殊文字を入力できます。

11

特定の文字で始まるか検索する

名前が E から始まるか検索します。「IFERROR 関数」を使用して、始まらないときに FALSE にできます。

=FIND("E",B3)=1
=IFERROR(FIND("E",B4)=1,FALSE)

結果が 1 のとき、その文字から始まります。

18

右から検索する

最後の文字から左に向かって検索するには文字列を反転します。反転するには「スピル」を使用します。

MID 関数」と「SEQUENCE 関数」を使用して、文字列を 1 文字ずつ逆から抽出します。それを「TEXTJOIN 関数」を使用して結合します。

=TEXTJOIN("",FALSE,MID(B3,SEQUENCE(LEN(B3),,LEN(B3),-1),1))

LEN 関数」を使用して文字数を取得します。反転した文字列を FIND 関数で検索して 文字数 - 結果 + 1 が後ろから検索した位置になります。

=LEN(C4)-FIND("A",C4)+1
17
スピルは 365 または 2021 から使用できます。

何番目を指定して検索する

ラムダを使用して何番目の検索ワードを検索するには「REDUCE 関数」を使用します。複雑なので詳細は関数のページをご覧ください。

=REDUCE(0,SEQUENCE(B5),
LAMBDA(total,x,
FIND($B$3,$C$3,total+1)))
16

SEQUENCE 関数」にループする回数を入力して、その数だけ FIND 関数を実行します。その 結果 + 1 を次の FIND 関数の引数「開始位置」に指定して、何番目の検索ワードを検索します。

SEQUENCE(B5) の部分に何番目の検索ワードを検索するかを入力します。

total+1 の部分で前回の検索結果 + 1 を開始位置にしています。

ラムダは 365 で使用できます。

解説

大文字小文字を区別して検索します。ワイルドカードは使用できません。大文字小文字を区別しないときや、ワイルドカードを使用して検索するには「SEARCH 関数」を使用します。

引数「検索ワード」が引数「検索対象」の先頭の文字にあるときは 1 を返します。

引数「検索ワード」が引数「検索対象」に複数存在するときは、左から検索して最初に見つけた文字の位置を返します。

引数「検索ワード」が空文字 "" や空のセルのときは、引数「開始位置」の値が返されます。引数「開始位置」を省略しているときは 1 です。

引数「検索ワード」が見つからなかったときはエラー #VALUE! になります。

引数「開始位置」が 0 以下や引数「検索対象」の文字数より大きいときはエラー #VALUE! になります。