Excel 曖昧検索で抽出 FILTERとISNUMBERとSEARCHで作る

エクセル

膨大なデータがはいっている「all」のシートからあいまい検索で該当するデータを抜き取りたい

関数は以下の通りとなる

=FILTER(
all!C:E,
ISNUMBER(SEARCH($B$2, all!C:C)),
"")

仕組みを超かんたんに説明すると

  • SEARCH
    → 「J列の中に O3 の文字が含まれているか?」
  • ISNUMBER
    → 「含まれていたら TRUE」
  • FILTER
    → 「TRUE の行だけを表示」

ここの解説は下部にもう少しく詳しく残すね。

B2を空白にするとすべての情報が表示されてしまう。これは気になる。

B2が空白の時は何も表示させない場合は以下の関数でOK

=IF($B$2="","",
FILTER(
all!C:E,
ISNUMBER(SEARCH($B$2, all!C:C))))

B2が空白の場合、以下の通りスッキリ表示になる

① SEARCH(探す役)

SEARCH の正体

SEARCH(探したい文字, 探される文字)

今回だと:

SEARCH($B$2, all!C:C)

何をしている?

  • J列の 1行ずつ に対して
  • O3 に入力された文字を探す

戻り値(結果)

J列の中身O3 = yuko の場合SEARCHの結果
a111@aaa.co.jp含まれてる1
test_yuko@bbb含まれてる6
tanaka@ccc含まれてない#VALUE!

📌 ポイント

  • 見つかったら → 数字(開始位置)
  • 見つからなかったら → エラー

② ISNUMBER(〇か×かを決める役)

ISNUMBER の正体

ISNUMBER(値)

SEARCH と組み合わせると?

ISNUMBER(SEARCH(...))

何が起きる?

SEARCHの結果ISNUMBERの判定
1 / 6 / 10TRUE
#VALUE!FALSE

📌 つまり

  • 「数字が返ってきた」
    → 文字が 含まれている
  • 「エラー」
    → 文字が 含まれていない

③ FILTER(ふるいにかける役)

FILTER の正体

FILTER(表示したい範囲, 条件, 見つからない時)

今回:

FILTER(
  all!C:E,      ← 表示したいデータ
  TRUE / FALSE の並び,            ← 条件
  ""
)

ここが超重要✨

FILTER はこう考えてる👇

「条件が TRUE の行だけ、表示しよう」

イメージ図

J列条件
a111@aaaTRUE → 表示
test@bbbFALSE → 非表示
a111@cccTRUE → 表示

④ 3つが合体するとこうなる!

1️⃣ SEARCH
→「文字が含まれているか探す」
2️⃣ ISNUMBER
→「含まれてたら TRUE に変換」
3️⃣ FILTER
→「TRUE の行だけ抜き出す」

📌 だからこの式は

「J列の中から、
B2 の文字を含むメールだけを一覧表示する」

って意味になる


⑤ たとえ話(超直感版)

  • SEARCH:👀「この中に“gmail”ある?」
  • ISNUMBER:✅❌「あった/なかった」
  • FILTER:🧺「あったやつだけカゴに入れる」

コメント

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