アラサーからのプログラマー生活

アラサーの新米PGが必死に頑張る成長記録です。あとは旅行とか。

【MicrosoftExcel】複数条件でフィルターを掛ける方法って難しくない?

f:id:hollage0214:20200113013052p:plain

こんにちは、堀井です。

まずは上記の画像をご覧ください。

出勤簿をExcelで付けさせられている人*1のスクショです。

網掛けの部分を見ていただければ分かる通り、この人は非常に打刻漏れが多いです。

なのでフィルターを使って、打刻漏れをした日を全て抽出してみたいと思います。

ちなみに網掛けは分かりやすく付けているだけで、実際はないものだと思ってください。



まずは土日を除いて・・・。



・・・。



・・・・・・。



えいっ。



f:id:hollage0214:20200113014411p:plain

うーん、上手くいきません

どうしても退勤欄が空欄でも出勤欄が埋まっていれば抽出から漏れてしまうんですよね。

今日はそんな人のための記事です。



オートフィルター機能では実装不可能

f:id:hollage0214:20200113015444p:plain
結論から言いますと上記画像赤枠の"オートフィルター"機能で実装することはできません

当記事を書くにあたって色々試していますが、数値フィルターでもダメでした。

そもそも空白が一番上に来る仕様なんて実装したら100万行近く全て上に来るし・・・。



ではどうするかと言うと詳細設定を使います。


詳細設定って何なの

f:id:hollage0214:20200113021207p:plain
画像の通り、"データ"タブに配置されている機能です。

複雑な条件を使ってフィルター処理を行うときのオプションです。

とありますが、実際クリックしてみても全然使い方が分からないんですよね。

f:id:hollage0214:20200113021403p:plain

リスト範囲くらいなら何とか理解できるかな・・・。

抽出したいデータを選ぶのね。

だから出勤簿の範囲にあたる A1:D32 と。



で、他の項目は???



検索条件は分かる。でも範囲って???

となりませんか?私はなりました。


詳細設定の使い方

これも結論から言います。

簡単に言えば

抽出したい条件式を書いたテーブルを作っておき、それを「検索条件範囲」に指定する

です。

難しいですか?

じゃあ画像で。



f:id:hollage0214:20200126133050p:plain

先頭行には必ず項目を入力してください。

次の行には検索条件を記入しますが、記入方法は下記の通り。

  • = 等しい
  • <> 等しくない
  • > 抽出条件よりも大きい(時刻なら遅い時間、日付なら未来)
  • < 抽出条件よりも小さい(時刻なら早い時間、日付なら過去)

例えば >17:00 とすれば17時以降となります。

例えば <>土 とすれば土曜日以外となります。

なので、例1の1行目は「曜日<>土、曜日<>日、出勤=」を満たす行の抽出となり、土日以外で出勤欄が空白であることを指します。

同じく2行目は土日以外で退勤欄が空白である項目の抽出となります。

また、1行につき検索条件は1つまでしか指定できず、それを複数行書くとOR条件として抽出ができます。


抽出結果

そして抽出された結果がこちら。

f:id:hollage0214:20200126142155p:plain

万一休日出勤で出退勤とも打刻漏れならどうしようもありません。経理とかに行って頭下げてきてください。


まとめ

  • 先頭行に抽出したい項目を並べる
  • 複数条件がある項目があれば2列用意する
  • 条件式に使う演算子は等号と不等号の組み合わせ
  • "時間"の大きいは"未来"を指す

です。



f:id:hollage0214:20200126155933p:plain

ちなみに
"数式"タブ → 名前の定義 → 名前(N):
に任意の名前を設定すると、
"検索条件範囲"の部分にその名前を入れることができ、他のユーザーが見たときに分かりやすくなります。

それではまた次回。

*1:全て架空の記録です