膨大なデータがはいっている「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 / 10 | TRUE |
| #VALUE! | FALSE |
📌 つまり
- 「数字が返ってきた」
→ 文字が 含まれている - 「エラー」
→ 文字が 含まれていない
③ FILTER(ふるいにかける役)
FILTER の正体
FILTER(表示したい範囲, 条件, 見つからない時)
今回:
FILTER(
all!C:E, ← 表示したいデータ
TRUE / FALSE の並び, ← 条件
""
)
ここが超重要✨
FILTER はこう考えてる👇
「条件が TRUE の行だけ、表示しよう」
イメージ図
| J列 | 条件 |
|---|---|
| a111@aaa | TRUE → 表示 |
| test@bbb | FALSE → 非表示 |
| a111@ccc | TRUE → 表示 |
④ 3つが合体するとこうなる!
1️⃣ SEARCH
→「文字が含まれているか探す」
2️⃣ ISNUMBER
→「含まれてたら TRUE に変換」
3️⃣ FILTER
→「TRUE の行だけ抜き出す」
📌 だからこの式は
「J列の中から、
B2 の文字を含むメールだけを一覧表示する」
って意味になる
⑤ たとえ話(超直感版)
- SEARCH:👀「この中に“gmail”ある?」
- ISNUMBER:✅❌「あった/なかった」
- FILTER:🧺「あったやつだけカゴに入れる」




コメント