Excel関数 逆引き集 | 大文字小文字区別検索 → FIND

Excel
スポンサーリンク

概要

「A は見つけたいけど、a は無視したい」
「商品コードの ABC と abc をきっちり区別したい」
「パスワードっぽい文字列で、大文字と小文字をちゃんと判定したい」

こういう 大文字・小文字を“区別して”検索したい ときに使うのが FIND 関数です。
FIND は「何文字目にあるか」を返す関数ですが、同時に

  • 大文字・小文字を区別して検索する
  • 見つからなければエラーになる

という特徴を持っています。

ここでは、プログラミング初心者向けに「大文字小文字を区別した検索」としての FIND を、テンプレートと例題付きで丁寧に解説します。


FIND 関数の基本(大文字小文字を区別する検索)

FIND の書式と意味

=FIND(検索文字列, 対象文字列, [開始位置])

検索文字列
探したい文字・文字列です。”A” や “ABC” のようにダブルクォーテーションで囲むか、セル参照で指定します。

対象文字列
どこから探すか。セル参照(A2 など)や直接 “AbcABC” のように書いても構いません。

開始位置(省略可)
対象文字列の「何文字目から」探し始めるか。省略すると 1(先頭)になります。

FIND の重要ポイントはここです。

  • “A” と “a” は「別の文字」として扱われる
  • 完全に一致する場所だけ見つかる
  • 見つからなければ #VALUE! エラーになる

基本パターン:大文字と小文字で結果が変わる

「A」と「a」を区別して検索する

A2 に「AbcABC」という文字列が入っているとします。

「大文字の A」の位置を検索する式:

=FIND("A", A2)

結果は 1(先頭の A)になります。

「小文字の a」を検索する式:

=FIND("a", A2)

結果は #VALUE!(見つからない)になります。
A2 には「A」はありますが、「a」は 1 つもないためです。

同じように、「小文字の b」を探すとこうなります。

=FIND("b", A2)

A2 が「AbcABC」なので、b は 2 文字目。結果は 2 になります。

このように、FIND は大文字小文字をしっかり区別して位置を返します。


応用パターン1:大文字だけ含まれているかチェック

文字列の中に「大文字 X」が含まれているか判定する

例えば「X(大文字)」が含まれているかどうかを調べたい場合。

単に FIND すると、見つからなければエラーになります。

=FIND("X", A2)

そこで IFERROR と組み合わせて「含まれる/含まれない」を判定します。

=IF(IFERROR(FIND("X", A2), 0)>0, "X含む", "Xなし")

FIND(“X”,A2)
見つかれば位置(1以上の数値)、見つからなければエラー。

IFERROR(…,0)
エラーなら 0 に変える。
結果として「見つかれば1以上、見つからなければ0」。

IF(…>0,”X含む”,”Xなし”)
1以上なら「X含む」、0なら「Xなし」。

これで、「大文字 X を含むかどうか」を判定できます。
小文字 x は別物として扱われるので、x だけの場合は「Xなし」になります。


応用パターン2:大文字と小文字で別の処理をする

“ABC” は OK、”abc” は NG と判定する

A2 に入っている文字列の中に、

  • 大文字 “ABC” があれば「OK」
  • 小文字 “abc” しかなければ「NG」

と判定したい場合。

大文字 “ABC” を FIND して、あれば OK、なければ NG という判定をします。

=IF(IFERROR(FIND("ABC", A2), 0)>0, "OK", "NG")

ここでポイントは、”ABC” と “abc” は別ものなので、

  • A2 が「testABC」→ OK
  • A2 が「testabc」→ NG
  • A2 が「testAbc」→ NG(完全一致でないため)

という判定になります。


応用パターン3:コードの大文字部分だけ位置で判定する

コードが「先頭3文字はすべて大文字のアルファベットか?」をチェックするイメージ

完全に関数だけで「大文字だけ・小文字だけ」を判定しようとするとやや難しいですが、
例えば「先頭に ‘ABC’ が来ているか」をチェックする程度なら FIND で簡単です。

A2 に「ABC-001」「Abc-001」のようなコードが入り、
先頭の「ABC」であるものだけ OK にしたいとします。

先頭3文字が “ABC” かどうかは、
「位置 1 に ‘ABC’ があるか?」で判定できます。

=IF(IFERROR(FIND("ABC", A2), 0)=1, "OK", "NG")

A2 が「ABC-001」→ FIND(“ABC”,A2)=1 → OK
A2 が「Abc-001」→ FIND(“ABC”,A2) はエラー → 0 → NG
A2 が「XABC-001」→ FIND(“ABC”,A2)=2 → 位置1ではないので NG

「どこかに含まれていれば」ではなく、「先頭に大文字ABCがある」かどうかまで判定できます。


応用パターン4:SEARCH との違いを利用する

大文字小文字を区別“しない” SEARCH 関数と並べて使うと、
「大文字/小文字の両方を許可するかどうか」を設計できます。

例えば、

  • 「abc」でも「ABC」でも OK にしたい → SEARCH
  • 「ABC のみ OK、abc は NG にしたい」 → FIND

という使い分けができます。

SEARCH の書式は FIND とほぼ同じなので、単純に「区別したいなら FIND」と覚えておくとよいです。


応用パターン5:大文字の位置を使って前後を切り出す

最初に出てくる「大文字 X の前後」で文字列を分ける

A2 に「abcX123」が入っていて、
大文字 X の前後で分割したいとします。

X の位置:

=FIND("X", A2)

X の前:

=LEFT(A2, FIND("X", A2)-1)

結果:「abc」

X の後ろ:

=MID(A2, FIND("X", A2)+1, LEN(A2)-FIND("X", A2))

結果:「123」

小文字 x は対象外なので、A2 に「abcx123」と入っている場合は FIND(“X”,A2) がエラーになり、
「大文字 X を境界に分けたい」という処理がそのまま実現できます。


例題

問題1

A2 に「AbcABC」という文字列が入っています。
大文字の「A」が最初に現れる位置を求める式を書いてください。

=FIND("A", A2)

問題2

A2 に「AbcABC」という文字列が入っています。
小文字の「a」を検索する式を書いてください。
このとき、どのような結果になるかも答えてください。

=FIND("a", A2)

結果は #VALUE!(見つからないためエラー)になります。


問題3

A2 の文字列に「大文字の X」が含まれていれば「X含む」、
含まれていなければ「Xなし」と表示したいです。
FIND と IFERROR を組み合わせた式を書いてください。

=IF(IFERROR(FIND("X", A2), 0)>0, "X含む", "Xなし")

問題4

A2 に「ABC-001」や「Abc-001」のようなコードが入っています。
先頭が「大文字の ABC」の場合だけ「OK」、
それ以外は「NG」と表示したいです。
FIND と IFERROR を使った式を書いてください。

=IF(IFERROR(FIND("ABC", A2), 0)=1, "OK", "NG")

問題5

A2 に「abcX123」という文字列が入っています。
大文字「X」の前の文字列だけ取り出したいです。
FIND と LEFT を使った式を書いてください。

=LEFT(A2, FIND("X", A2)-1)

FIND は「文字の位置を知る」関数ですが、
大文字小文字を区別することで、
コードチェック・ラベルの判定・境界の抽出など、細かい条件分岐に使える強力な“フィルター”になります。

まずは「A と a をきちんと区別して探せる」という感覚を掴んで、
LEFT / MID / RIGHT・IFERROR と一緒に少しずつ組み合わせていくと、
文字列処理の設計力がぐっと上がっていきます。

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