見出し画像

【Excel】複数列をフィルターかける方法

どうも。HALUです。

今回はExcelのフィルターについての質問があったのでここにやり方を残しておこうと思います。

画像1

上の表があった時、Aさんがメンバーになっている日だけを抜き出したい。しかし単にフィルターをかけるだけだと、列ごとにしか取り出すことができません。(下図のようにC列のみとか)本当はC~FのどこでもAさんが居れば全部抜き出したいです。

画像2

その解決法を2つ紹介したいと思います。

<1つ目:フィルターにかける条件を設置するパターン>

こちらは、Aさんがいる場合の行を探すための条件式を表で作ってしまうやり方です。条件を表で作る!?と思われるかもしれませんが、作ってみたら何となくその意味が分かると思います。

※注意することとして、項目名は全て違う名前にしないと上手く動きません。今回はメンバー1、メンバー2、メンバー3...と敢えて連番を付けました。この体裁にしたくない場合は、下に記載する2つ目の方法をお試しください。

画像3


【下準備】
1.フィルターをかける項目の行を別の場所にコピー(上図の赤枠)
2.項目の下は、1行ごとに条件式が入る意味になります。上記の場合は、メンバー1にAが入っている または メンバー2にAが入っている または メンバー3にAが入っている または....と、条件をいくつでも書いておくことによってどれかに一致すればOKという意味です。


【フィルター設定】
3.フィルターを付けたい表の中のセルを選択しておく
4.[データ]タブ→フィルターの隣にある"詳細設定"を開く(オレンジ枠)
5.リスト範囲の所が、おそらくフィルターをかけたい表の範囲になっていると思います。(範囲が違えば数値を修正してください)

画像4

6.検索条件範囲を指定してください(赤枠)
7.OKを押す

画像5

上記のように、Aさんがメンバーに入ってる日だけ取り出すことが出来ました。

ただ、これには難点があって、他のメンバーを実行したいときに条件表のAを全部入れ替えないといけないので面倒ですね。そういう時は下図のようにメンバーを別の場所で指定し、条件式の表はそのセルを参照するようにしましょう。(今回だとl1セルにメンバーを置いて、条件の表の中には=l1と参照式を入れてます。条件の表は全てl1を参照するようにすれば、l1の値を書き換えるだけで済みます。)

画像6

<2つ目:フィルター代わりの列を新規作成するパターン>

こちらは、フィルターをかけたい表の隣に新しい列を設置し、Aさんが居る場合はその行は〇と判断して、最終的に〇の行をフィルターする方法です。

列が新しく増える代わりに、フィルターをかけなくてもAさんがいる行が視覚的に分かりやすい利点はあります。

画像7

1.任意の場所にフィルター用の列を作成(例:上記のG列)
2.G列の初めに上記のような数列を入力。意味としては、IF文とOR文でC2=J1(今はAが入っていますね) または D2=J1 または E2=J1 または ...の時、〇を出力する。その条件に当てはまらない場合は空欄""にする。
ちなみにJ1に$マークが付いていますが、この後数式を下の行にもコピーしていくので、このセルは固定するために付けています。

3.2で作った数式をG列全ての行にコピー
4.G列を〇でフィルターかける(下図)

画像8

これで上手くAさんだけいる日付を取り出すことが出来ました!
もし、フィルターをかけたいメンバーを変更するときは、今であればJ1の値を変えてフィルター選択しなおしてください。(下図)

画像9

以上です、今回紹介した内容は条件の表を作ったり、新しい列を生成したりしているため、何か新しいものを作るのがまずい場合はマクロを組んで全部裏側で処理することになります

また何か分からない点があれば言ってください~それでは~

いいなと思ったら応援しよう!