PR

Excel FILTER関数で大文字小文字を区別する方法|FIND・EXACT・SEARCHの正しい使い分け

Excel
記事内に広告が含まれています。

Excelで大文字小文字を区別したコードやIDを管理しているのに、
「見た目は同じなのに、FILTERしたら大文字小文字まとめて抽出されてしまった」
そんな経験はありませんか?

実は、FILTER関数単体では大文字・小文字を区別することはできません
そのまま使うと、
abc-001
Abc-001
ABC-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」があるかどうかを確認した結果です。
小文字では検索できていないことが確認できますね。

FIND関数の仕組み

そのため、次のように書くことで検索文字列が管理IDの先頭に一致する行だけを抽出できます。

=FILTER(A2:E12, FIND(G2, A2:A12)=1)

この数式では、「abc-」と「Abc-」、「ABC-」を別物として判定し、
大文字小文字を区別したフィルタリングが行われます。
ではさっそく、上記数式を入力してみましょう。

FILTER関数とFIND関数を組み合わせる(エラー発生するケース)_先頭の文字列と一致

これだと、エラーが発生してしまいます。
実はこの式、一見正しそうですが、#VALUE! エラーが発生してしまいます。

この理由は、FIND関数が見つからない場合に FALSE ではなくエラーを返すためです。

IFERRORでエラーを回避する

ではどうしたらエラーが発生しないようにすることができるか、
それはIFERROR関数を使うことで、エラーを回避することができます。

先ほどの数式に、以下のようにIFERROR関数を付け加えます。

=FILTER(A2:E12, IFERROR(FIND(G2, A2:A12)=1, FALSE))

すると、エラーが発生せず、先頭が「abc-」のデータのみ抽出することができます。

FILTER関数とFIND関数を組み合わせる(エラー回避できたケース)_先頭の文字列と一致

これはIFERROR関数が、
・「abc-」で始まるID → TRUE
・見つからない行 → エラー → FALSE

に変換することで、大文字小文字を区別したフィルターが正しく動作するというわけです。
(FILTER関数はTRUEだけ抽出するため)

EXACT関数を使うとエラーが起きない

EXACT関数を使用することでも、大文字小文字を区別することが可能です。
EXACT関数は、大文字小文字含め、2つの文字列が完全一致している場合にTRUEを返します。

一致しない場合はFALSEを返すため、先ほどのようなエラー処理も必要なくなります。

確実な検索をする場合は、EXACT関数を使用するほうが安全です。
EXACT関数を使用する場合は、以下のように数式を入力します。

=FILTER(A2:E12, EXACT(LEFT(A2:A12,4), G2))
FILTER関数とEXACT関数を組み合わせる

この方法は、
・エラーが発生しない(合致するか、しないかの判断のため)
・ロジックが直感的で分かりやすい
・指定した文字に合致するデータしか抽出しない

というメリットがあります。

検索文字が固定で分かっている場合は、EXACT関数のほうが安全です。

途中の文字列を検索したい場合の注意点

次に、「先頭ではなく、途中に文字列が含まれているか」で検索したいケースを紹介します。
今度は、「BC-」という文字列が含まれているデータを抽出してみます。

まずは、先ほどと同じ数式を入力してみます。

=FILTER(A2:E12, IFERROR(FIND(G2, A2:A12)=1, FALSE))
FILTER関数とFIND関数を組み合わせる(エラー発生するケース)_途中の文字列と一致

再度、エラーが発生してしまいます。
実はこの数式は「先頭一致」専用で計算しているため、途中一致では正しく判定されません。
そのまま書いてしまうとエラーになってしまいます。

ではどのようにすればよいでしょうか。
この場合、「=1」を「>0」とすることで、途中一致の検索が可能になります。

数式を以下のように変更します。

=FILTER(A2:E12, IFERROR(FIND(G2, A2:A12)>0, FALSE))
FILTER関数とFIND関数を組み合わせる(エラー回避できたケース)_途中の文字列と一致

こうすることで、
・対象の文字列が見つかれば、1以上の数値が返される
・対象の文字列が見つからなければエラー → FALSE

となるため、途中一致且つ大文字小文字を区別した検索が可能となるわけです。

大文字小文字を区別したくない場合の方法

逆に、「大文字小文字は区別したくない」というケースもあると思います。
その場合は FIND関数ではなくSEARCH関数 を使います。

考え方はFIND関数と一緒です。

■先頭一致する場合

先頭の文字列が一致するかどうかで検索する場合は、以下の通り数式を入力します。

=FILTER(A2:E12, IFERROR(SEARCH(G2, A2:A12)=1, FALSE))

以下の通り、大文字小文字を区別することなくデータが抽出されます。

FILTER関数とSEARCH関数を組み合わせる_先頭の文字列と一致

■途中一致する場合

途中の文字列が一致するかどうかで検索する場合は、以下の通り数式を入力します。

=FILTER(A2:E12, IFERROR(SEARCH(G2, A2:A12)>0, FALSE))
FILTER関数とSEARCH関数を組み合わせる_途中の文字列と一致

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で行っている方は、ぜひ今回の方法を取り入れてみてください。

最後まで読んでいただき、ありがとうございました。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました