Excelで大文字小文字を区別したコードやIDを管理しているのに、
「見た目は同じなのに、FILTERしたら大文字小文字まとめて抽出されてしまった」
そんな経験はありませんか?
実は、FILTER関数単体では大文字・小文字を区別することはできません。
そのまま使うと、abc-001Abc-001ABC-001
といった本来は別物のIDまで一緒に抽出されてしまいます。
でも実際の業務では、大文字小文字を区別してフィルターしたいケースも多々あります。
この記事では、FILTER関数で大文字小文字を区別する方法を図解で分かりやすく解説します。
※FILTER関数の基本的な使い方や構文については、以下記事で詳しく解説しております。
こちらもぜひご覧ください。
- FILTER関数で大文字小文字を区別して抽出する方法
- エラーが出る原因とその回避方法
- 逆に大文字小文字を区別しないで抽出する方法
- FIND・EXACT・SEARCH関数の正しい使い分け方法
FILTER関数は大文字小文字を区別しない?
結論から言うと、FILTER関数単体では大文字小文字を区別することができません。
実際に区別するかどうかは、条件部分で使っている関数次第です。
今回は、条件部分に以下3種類の関数を使用して解説していきます。
・FIND関数:大文字小文字を区別する
・EXACT関数:完全一致で区別する
・SEARCH関数:区別しない
この違いを理解しておくと、FILTER関数をもっと活用することが可能です。
それぞれのパターンで分かりやすく解説していきます。
検証用のサンプルデータ(ID・コード管理)
管理IDだけが大文字小文字で異なる、実務でありがちなデータを使います。
以下のように、管理IDに大文字小文字が入り混じっている以下サンプルデータで解説していきます。

今回は分かりやすいように、検索文字列を G2セル に入力する想定で解説します。
大文字小文字を区別して先頭一致で抽出する方法
では、実際にどのようにすれば大文字小文字を区別して抽出できるかを見ていきましょう。
FIND関数を使用する
大文字小文字を区別してIDやコードを抽出したい場合、
FILTER関数と FIND関数 を組み合わせることで実現できます。
FIND関数は、指定した文字列が左から何文字目にあるかを返す関数で、
検索時に大文字小文字を区別するという特徴があります。
以下はFIND関数で大文字の「ABC」があるかどうかを確認した結果です。
小文字では検索できていないことが確認できますね。

そのため、次のように書くことで検索文字列が管理IDの先頭に一致する行だけを抽出できます。
=FILTER(A2:E12, FIND(G2, A2:A12)=1)この数式では、「abc-」と「Abc-」、「ABC-」を別物として判定し、
大文字小文字を区別したフィルタリングが行われます。
ではさっそく、上記数式を入力してみましょう。

これだと、エラーが発生してしまいます。
実はこの式、一見正しそうですが、#VALUE! エラーが発生してしまいます。
この理由は、FIND関数が見つからない場合に FALSE ではなくエラーを返すためです。
IFERRORでエラーを回避する
ではどうしたらエラーが発生しないようにすることができるか、
それはIFERROR関数を使うことで、エラーを回避することができます。
先ほどの数式に、以下のようにIFERROR関数を付け加えます。
=FILTER(A2:E12, IFERROR(FIND(G2, A2:A12)=1, FALSE))すると、エラーが発生せず、先頭が「abc-」のデータのみ抽出することができます。

これはIFERROR関数が、
・「abc-」で始まるID → TRUE
・見つからない行 → エラー → FALSE
に変換することで、大文字小文字を区別したフィルターが正しく動作するというわけです。
(FILTER関数はTRUEだけ抽出するため)
EXACT関数を使うとエラーが起きない
EXACT関数を使用することでも、大文字小文字を区別することが可能です。
EXACT関数は、大文字小文字含め、2つの文字列が完全一致している場合にTRUEを返します。
一致しない場合はFALSEを返すため、先ほどのようなエラー処理も必要なくなります。
確実な検索をする場合は、EXACT関数を使用するほうが安全です。
EXACT関数を使用する場合は、以下のように数式を入力します。
=FILTER(A2:E12, EXACT(LEFT(A2:A12,4), G2))
この方法は、
・エラーが発生しない(合致するか、しないかの判断のため)
・ロジックが直感的で分かりやすい
・指定した文字に合致するデータしか抽出しない
というメリットがあります。
検索文字が固定で分かっている場合は、EXACT関数のほうが安全です。
途中の文字列を検索したい場合の注意点
次に、「先頭ではなく、途中に文字列が含まれているか」で検索したいケースを紹介します。
今度は、「BC-」という文字列が含まれているデータを抽出してみます。
まずは、先ほどと同じ数式を入力してみます。
=FILTER(A2:E12, IFERROR(FIND(G2, A2:A12)=1, FALSE))
再度、エラーが発生してしまいます。
実はこの数式は「先頭一致」専用で計算しているため、途中一致では正しく判定されません。
そのまま書いてしまうとエラーになってしまいます。
ではどのようにすればよいでしょうか。
この場合、「=1」を「>0」とすることで、途中一致の検索が可能になります。
数式を以下のように変更します。
=FILTER(A2:E12, IFERROR(FIND(G2, A2:A12)>0, FALSE))
こうすることで、
・対象の文字列が見つかれば、1以上の数値が返される
・対象の文字列が見つからなければエラー → FALSE
となるため、途中一致且つ大文字小文字を区別した検索が可能となるわけです。
大文字小文字を区別したくない場合の方法
逆に、「大文字小文字は区別したくない」というケースもあると思います。
その場合は FIND関数ではなくSEARCH関数 を使います。
考え方はFIND関数と一緒です。
■先頭一致する場合
先頭の文字列が一致するかどうかで検索する場合は、以下の通り数式を入力します。
=FILTER(A2:E12, IFERROR(SEARCH(G2, A2:A12)=1, FALSE))以下の通り、大文字小文字を区別することなくデータが抽出されます。

■途中一致する場合
途中の文字列が一致するかどうかで検索する場合は、以下の通り数式を入力します。
=FILTER(A2:E12, IFERROR(SEARCH(G2, A2:A12)>0, FALSE))
SEARCH関数は、大文字小文字を同一視する点がFIND関数との違いです。
よくあるトラブルと注意点
FIND関数やSEARCH関数との組み合わせは便利ですが、使用する上での注意点もあります。
■検索セルが空白だと、すべてヒットする
→先ほどのFIND関数/SEARCH関数の検索条件を空白にすると、すべてのデータがヒットしてしまいます。
ちゃんと検索条件が設定されているかどうかは念入りに確認しましょう。
■FIND関数/SEARCH関数は見つからないとエラーが返される
→上記でも記載した通り、この関数は対象文字列がない場合は、結果がエラーとして返ってきてしまいます。
エラーが発生してしまうと、結果的にFILTER関数で抽出されるデータもエラーになってしまうため、IFERROR関数を使用して、エラー対策を行いましょう。
ここまで、FILTER関数で大文字小文字を区別する方法を解説してきました。
ただし、FILTER関数は条件式の組み方によって挙動が大きく変わる関数です。
今回のような応用テクニックを正しく使うためにも、
FILTER関数の基本構文や使い方を一度整理しておくと理解が深まります。
👉FILTER関数の基本的な使い方を解説した記事はこちら
まとめ|FILTER関数は「条件の書き方」がすべて
今回は、FILTER関数を使用するときに大文字小文字を区別する方法を紹介しました。
FILTER関数は非常に便利な関数で、条件式に他の関数を組み合わせることで更に強力になります。
★ポイント
✅FILTER関数自体は大文字小文字を区別しない
✅区別するかどうかは、FIND/EXACT/SEARCH関数の選択で決まる
✅エラーが出る場合、IFERROR関数で必ず制御する
✅完全一致ならEXACT関数、柔軟検索ならFIND/SEARCH関数を使用
コード管理・ID管理をExcelで行っている方は、ぜひ今回の方法を取り入れてみてください。
最後まで読んでいただき、ありがとうございました。


コメント