Excel関数 逆引き集 | 指定文字位置を取得 → FIND

Excel
スポンサーリンク

概要

「この文字列の中の『-』は何文字目にある?」
「メールアドレスの @ の位置を知りたい」
「区切り文字の前後で文字を分けたい」

こういうときに使うのが 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」だけ取り出したいとします。

  1. ハイフンの位置を FIND で調べる
  2. その 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 などと組み合わせることで、
区切り文字による分割・メールアドレスやコードの検証など、文字列処理の中心的な役割を担うようになります。
まずは「何文字目?」をしっかり使いこなして、その先の切り出し・判定へ広げていきましょう。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました