FIND関数の使い方|文字の位置を調べる・2つ目を探す・含むか判定する

FIND関数の使い方|文字の位置を調べる・2つ目を探す・含むか判定する

エクセルで、ある文字が文字列の何文字目にあるかを調べるには、FIND関数を使います。たとえば、メールアドレス「yamada@example.com」の「@」の位置は、=FIND("@",A3) で 7 と分かります。

文字列の一部を取り出す方法をまとめて比べたいときは、文字列を抽出する方法まとめ(早見表)が便利です。

FIND関数は単独で使うより、LEFT・MID・RIGHT関数と組み合わせて「区切り文字の前まで」「後ろだけ」を取り出すときに活躍します。この記事では、FIND関数の基本、大文字・小文字の区別、2つ目の位置の探し方、見つからないときの対処、「含むかどうか」の判定までを、1つの表で説明します。下の練習ツールで、元の文字列を書き換えて結果の変わり方を試せます。

目次

FIND関数の書き方

FIND関数の構文
数式=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
エクセルのFIND関数で文字の位置を調べた表
エクセルのFIND関数で文字の位置を調べた表

文字の位置を調べる

1
結果を出したいセル(C3)を選びます。
2
「=FIND(“@”,」と入力し、元の文字列のセル(A3)をクリックします。
3
「)」と入力して Enter キーを押します。
FIND関数の式
数式=FIND("@",A3)
ひとことで文字の位置を探す
"@"
探す文字です
A3
文字列です

結果は 7 です。「yamada」の6文字の次が「@」なので7文字目です。

大文字・小文字、全角・半角を区別する

FIND関数は大文字と小文字を区別します。「Excel」で小文字の「e」を探すと、先頭の大文字「E」は飛ばされ、=FIND("e",A5) の結果は 4 です。大文字の「E」なら 1 になります。

区別したくないときは SEARCH関数を使います。=SEARCH("e",A5) は大文字の「E」も見つけて 1 を返しました(SEARCH関数の使い方)。

注意注意:全角と半角も別の文字です。「山田 太郎」(全角の空白)を半角の空白で探すと、見つからずに #VALUE! エラーになりました。探す文字の種類を、元の文字列とそろえます。

2つ目の位置を探す(開始位置)

「AB-12-34」の2つ目の「-」は、1つ目の「-」の次の文字から探し直します。3つ目の引数(開始位置)に「1つ目の位置+1」を入れます。

FIND関数の式
数式=FIND("-",A6,FIND("-",A6)+1)
ひとことで文字の位置を探す
"-"
探す文字です
A6
文字列です
FIND("-",A6)+1
探し始める位置です

1つ目は3文字目なので、4文字目から探し、結果は 6 です。

見つからないときの表示を決める(IFERROR)

探す文字がないと #VALUE! エラーになります。表に残したくないときは、IFERROR関数で表示を決めます。

IFERROR関数の構文
数式=IFERROR(FIND("-",A7),"なし")
ひとことでエラーを別の値に置き換える
FIND("-",A7)
エラーかどうかを調べる式です
"なし"
エラーのときの値です

「TK5501」にはハイフンがないので、結果は なし です(エラーを表示しない方法)。

特定の文字を含むか判定する(ISNUMBER+FIND)

FIND関数は、見つかると数値、見つからないとエラーを返します。これを ISNUMBER関数で調べると、含むなら TRUE、含まないなら FALSE になります。

ISNUMBER関数の構文
数式=ISNUMBER(FIND("千代田",A8))
ひとことで数値かどうかを判定する
FIND("千代田",A8)
調べる値です

「東京都千代田区」は「千代田」を含むので、結果は TRUE です。IF関数と組み合わせれば「含むなら○」のように表示を変えられます(IF関数で特定の文字列を含むか判定する方法)。

FIND関数で文字を取り出す(LEFT・MID と組み合わせる)

「@」より前(ユーザー名)は、「@」の位置−1文字を左から取り出します。

LEFT関数の式
数式=LEFT(A9,FIND("@",A9)-1)
ひとことで左から文字を取り出す
A9
文字列です
FIND("@",A9)-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つの文字列が同じかを確かめるときは、エクセルで文字列を比較する方法もあわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次