概要
「この文字列の中の『-』は何文字目にある?」
「メールアドレスの @ の位置を知りたい」
「区切り文字の前後で文字を分けたい」
こういうときに使うのが FIND 関数です。
FIND は
「指定した文字が、左から数えて何文字目にあるか」 を教えてくれる関数です。
LEFT / MID / RIGHT と組み合わせると、文字列処理の幅が一気に広がります。
FIND 関数の基本
構文
=FIND(検索文字列, 対象文字列, [開始位置])
検索文字列
… 見つけたい文字・文字列。”@” や “-“、”ABC” など。
対象文字列
… どこから探すか。セル参照(A2 など)か、直接 “ABC-123” のように指定しても OK。
開始位置(省略可)
… 「対象文字列の何文字目から探し始めるか」。省略すると 1(先頭)になります。
FIND は 大文字・小文字を区別する 関数です。
(”A” と “a” は別物として扱われます)
見つからなかった場合は #VALUE! エラー になります。
基本的な使い方
文字が「何文字目」にあるか調べる
A2 に「ABC-123」という文字列が入っているとします。
「-」が何文字目にあるかを知りたいときは、こう書きます。
=FIND("-", A2)
結果は「4」になります。
(A→1文字目、B→2、C→3、-→4)
同じように、「C」の位置を調べるならこうです。
=FIND("C", A2)
結果は「3」になります。
応用1:区切り文字の「前後」を切り出す
ハイフンの「前」を取り出す(LEFT と組み合わせ)
A2 に「ABC-123」が入っていて、
ハイフンの前「ABC」だけ取り出したいとします。
- ハイフンの位置を FIND で調べる
- その 1 つ前までを LEFT で切り出す
という流れになります。
=LEFT(A2, FIND("-", A2)-1)
FIND(“-“,A2) が 4 なので、4−1=3 文字 → 「ABC」が取れます。
ハイフンの「後ろ」を取り出す(MID と組み合わせ)
同じく A2=「ABC-123」から、
ハイフンの右側「123」だけ取り出したいとき。
ハイフンの次の文字から残り全部を MID で取ります。
=MID(A2, FIND("-", A2)+1, LEN(A2)-FIND("-", A2))
開始位置:FIND(“-“,A2)+1(4+1=5文字目)
文字数:全体長 − FIND(“-“,A2)
少し長く見えますが、「区切り文字の後ろ全部」というよくあるパターンです。
応用2:メールアドレスの @ 位置を取得する
A2 に「user@example.com」が入っているとします。
@ の位置は次のように求められます。
=FIND("@", A2)
これを使うと、
- @ より前 → ローカル部
- @ より後ろ → ドメイン部
に分解することができます。
ローカル部(@ の前):
=LEFT(A2, FIND("@", A2)-1)
ドメイン部(@ の後ろ):
=MID(A2, FIND("@", A2)+1, LEN(A2)-FIND("@", A2))
応用3:同じ文字が複数あるときの探し方
FIND は「対象文字列の先頭から」探します。
同じ文字が何度も出てくる場合、最初に見つかった位置だけを返します。
例えば、A2 に「2024-01-05」が入っていて、
2つ目のハイフン「-」の位置を知りたい場合。
1つ目のハイフン位置:
=FIND("-", A2)
その次の位置から、もう一度 FIND します。
「開始位置」を指定するのがポイントです。
=FIND("-", A2, FIND("-", A2)+1)
こうすると「最初の – の次から探す」ので、2つ目の – の位置が返ってきます。
応用4:見つかったかどうかを判定する(エラー対策)
FIND は「見つからないと #VALUE! エラー」になるので、
IFERROR と組み合わせて「含まれる/含まれない」を判定することが多いです。
例えば「A2 に @ が含まれていれば ‘OK’、なければ ‘NG’」としたい場合。
=IFERROR(FIND("@", A2), 0)
は、見つかれば数値(位置)、見つからなければ 0 になります。
これを使って、
=IF(IFERROR(FIND("@", A2), 0)>0, "OK", "NG")
という形にすれば、「含まれるかどうか」を安全に判定できます。
FIND と SEARCH の違い
FIND によく似た関数に SEARCH があります。
大きな違いは「大文字・小文字を区別するかどうか」です。
- FIND … 大文字・小文字を区別する(”A” と “a” は別)
- SEARCH … 大文字・小文字を区別しない(”A” と “a” を同じとみなす)
コードや ID のように、「大文字・小文字が厳密に違う」データでは FIND を使うのがおすすめです。
例題
問題1
A2 に「ABC-123」という文字列が入っています。
この中で、ハイフン「-」は何文字目にありますか。
FIND 関数の式を書いてください。
=FIND("-", A2)
問題2
A2 に「ABC-123」が入っています。
ハイフンの前の文字列「ABC」だけを取り出したいです。
FIND と LEFT を組み合わせた式を書いてください。
=LEFT(A2, FIND("-", A2)-1)
問題3
A2 に「user@example.com」が入っています。
@ の前の部分(ユーザー名)だけを取り出す式を書いてください。
FIND と LEFT を使います。
=LEFT(A2, FIND("@", A2)-1)
問題4
A2 に「2024-01-05」という文字列が入っています。
2つ目のハイフン「-」の位置を求める式を書いてください。
FIND の「開始位置」引数を使います。
=FIND("-", A2, FIND("-", A2)+1)
問題5
A2 の文字列に「@」が含まれていれば「OK」、
含まれていなければ「NG」と表示したいです。
FIND と IFERROR を組み合わせた式を書いてください。
=IF(IFERROR(FIND("@", A2), 0)>0, "OK", "NG")
FIND は単体だと「位置を教えるだけ」の地味な関数ですが、
LEFT / MID / RIGHT、IFERROR などと組み合わせることで、
区切り文字による分割・メールアドレスやコードの検証など、文字列処理の中心的な役割を担うようになります。
まずは「何文字目?」をしっかり使いこなして、その先の切り出し・判定へ広げていきましょう。
