エクセルで、ある文字が文字列の何文字目にあるかを調べるには、FIND関数を使います。たとえば、メールアドレス「yamada@example.com」の「@」の位置は、=FIND("@",A3) で 7 と分かります。
文字列の一部を取り出す方法をまとめて比べたいときは、文字列を抽出する方法まとめ(早見表)が便利です。
FIND関数は単独で使うより、LEFT・MID・RIGHT関数と組み合わせて「区切り文字の前まで」「後ろだけ」を取り出すときに活躍します。この記事では、FIND関数の基本、大文字・小文字の区別、2つ目の位置の探し方、見つからないときの対処、「含むかどうか」の判定までを、1つの表で説明します。下の練習ツールで、元の文字列を書き換えて結果の変わり方を試せます。
FIND関数の書き方
| 引数 | 入れるもの | ポイント |
|---|---|---|
| 検索文字列 | 探したい文字(「”」で囲む) | 大文字と小文字、全角と半角を区別します。 |
| 対象 | 探す元の文字列(セル番地) | 最初に見つかった位置を返します。 |
| 開始位置 | 何文字目から探すか(省略可) | 省略すると 1 文字目から探します。 |
見つからないときは #VALUE! エラーになります。バイト数で位置を返す FINDB関数もあります。
まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
FIND関数の使い方|やりたいこと別の式
| やりたいこと | 式(例) | 結果 |
|---|---|---|
| 「@」の位置 | =FIND(“@”,A3) | 7 |
| 全角の空白の位置 | =FIND(“ ”,A4) | 3 |
| 小文字の「e」の位置 | =FIND(“e”,A5) | 4 |
| 2つ目の「-」の位置 | =FIND(“-“,A6,FIND(“-“,A6)+1) | 6 |
| 見つからないとき「なし」 | =IFERROR(FIND(“-“,A7),”なし”) | なし |
| 「千代田」を含むか | =ISNUMBER(FIND(“千代田”,A8)) | TRUE |
| 「@」より前を取り出す | =LEFT(A9,FIND(“@”,A9)-1) | yamada |

文字の位置を調べる
結果は 7 です。「yamada」の6文字の次が「@」なので7文字目です。
▶ この式(C3)を、練習ツールで試す / この式(C4)を、練習ツールで試す
大文字・小文字、全角・半角を区別する
FIND関数は大文字と小文字を区別します。「Excel」で小文字の「e」を探すと、先頭の大文字「E」は飛ばされ、=FIND("e",A5) の結果は 4 です。大文字の「E」なら 1 になります。
区別したくないときは SEARCH関数を使います。=SEARCH("e",A5) は大文字の「E」も見つけて 1 を返しました(SEARCH関数の使い方)。
2つ目の位置を探す(開始位置)
「AB-12-34」の2つ目の「-」は、1つ目の「-」の次の文字から探し直します。3つ目の引数(開始位置)に「1つ目の位置+1」を入れます。
1つ目は3文字目なので、4文字目から探し、結果は 6 です。
見つからないときの表示を決める(IFERROR)
探す文字がないと #VALUE! エラーになります。表に残したくないときは、IFERROR関数で表示を決めます。
「TK5501」にはハイフンがないので、結果は なし です(エラーを表示しない方法)。
特定の文字を含むか判定する(ISNUMBER+FIND)
FIND関数は、見つかると数値、見つからないとエラーを返します。これを ISNUMBER関数で調べると、含むなら TRUE、含まないなら FALSE になります。
「東京都千代田区」は「千代田」を含むので、結果は TRUE です。IF関数と組み合わせれば「含むなら○」のように表示を変えられます(IF関数で特定の文字列を含むか判定する方法)。
FIND関数で文字を取り出す(LEFT・MID と組み合わせる)
「@」より前(ユーザー名)は、「@」の位置−1文字を左から取り出します。
結果は yamada です。後ろを取り出すときは RIGHT関数(RIGHT関数の使い方)、途中は MID関数(MID関数の使い方)と組み合わせます。
バイト数で位置を調べる(FINDB)
FINDB関数は、位置をバイト数で返します。「山田 太郎」は、全角3文字(6バイト)の次が「太」なので、=FINDB("太",A10) の結果は 7 です。
FIND関数がうまくいかないときの確認表
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 「#VALUE!」になる | 探す文字が入っていない/全角・半角が違う | 探す文字を元の文字列と同じ種類にする。IFERROR関数で表示を決める。 |
| 大文字・小文字で見つからない | FIND関数は大文字・小文字を区別する | SEARCH関数を使う。 |
| 1つ目の位置しか分からない | 開始位置を指定していない | 3つ目の引数に「1つ目の位置+1」を入れる。 |
| 取り出しが1文字ずれる | 「-1」「+1」を付け忘れた | 前を取るなら −1、後ろを取るなら +1 を付ける。 |
FIND関数のよくある質問
FIND関数と SEARCH関数の違いは?
FIND関数は大文字・小文字を区別し、ワイルドカード(* や ?)は使えません。SEARCH関数は大文字・小文字を区別せず、ワイルドカードが使えます。
空の文字(””)を探すと?
空の文字を探すと、エラーではなく開始位置(省略時は 1)が返ります。セルが空のまま式を使うと、思わぬ結果になるので注意します。
あわせて読みたい:文字列の関連記事
練習用ファイル:練習用Excelファイル(.xlsx・無料)
文字列関数を問題で練習したいときは、文字列関数の練習問題10問もあわせてご覧ください。
2つの文字列が同じかを確かめるときは、エクセルで文字列を比較する方法もあわせてご覧ください。
