📘 Excel逆引き事典

Excelで土日・祝日をFILTER関数を使ってスピルリスト化する方法

日々の業務で、土日や祝日のデータを抽出する必要があることはよくあります。手作業では時間がかかる上にミスが発生しやすいです。この記事では、ExcelのFILTER関数を使ってスピルリスト化する方法を詳しく解説します。これにより、効率的に土日・祝日を自動で抽出でき、業務の生産性を大幅に向上させることができます。

📊 やり方の比較

手法メリットデメリット推奨
数式(FILTER関数)スピル機能で結果が自動更新される古いExcelでは使えない
マウス操作(フィルタリング)直感的で簡単手動での更新が必要、元データが消えるわけではないが結果の表示方法が異なる

fx 使用する数式

Excel / SpreadSheet
=FILTER(A2:A100, (WEEKDAY(A2:A100)=7) + (WEEKDAY(A2:A100)=1) + ISNUMBER(MATCH(A2:A100,B2:B5,0)))

💡 仕組みの解説

【数式の仕組み】FILTER関数は、指定された条件を満たすデータだけを抽出します。この例では、A列に日付が入力されていると仮定しています。

  1. WEEKDAY(A2:A100)=7:土曜日の場合(1週の最初の日曜日は1、次の日曜日は8などとカウントされるため、土曜日は7になります)
  2. WEEKDAY(A2:A100)=1:日曜日の場合
  3. ISNUMBER(MATCH(A2:A100,B2:B5,0)):B列に指定された祝日と一致する場合(祝日リストをB列に配置します)
  4. これらの条件が全てTRUEである場合、FILTER関数は該当のデータを抽出し、スピル機能により結果が自動更新されます。

この数式は元のデータを削除することなく、別の場所に抽出したデータを表示します。

具体的な手順

1
A列に日付データを入力し、B列に祝日のリストを作成します
2
C列の任意のセル(例:C2)にFILTER関数を入力します。具体的には=FILTER(A2:A100, (WEEKDAY(A2:A100)=7) + (WEEKDAY(A2:A100)=1) + ISNUMBER(MATCH(A2:A100,B2:B5,0)))と入力します
3
C列のセルを範囲外までドラッグしてスピル機能を有効化し、結果が自動的に表示されます

よくある質問

Q Q1. VBAと比べたときのメリットは?

A.
A1. FILTER関数を使用することでマクロやVBAを書く必要がなく、より簡単に条件に合致するデータを抽出できます。また、スピル機能により結果が自動的に更新されるため、手動での操作も不要です

Q Q2. スピルエラーとは?

A.
A2. スピルエラーは、FILTER関数や他の関数で結果の範囲を適切に指定できていない場合に発生します。この問題を解決するには、スピル機能が有効になっていることを確認し、必要であればセルの範囲を広げてみてください

Q Q3. スマホ版でも使える?

A.
A3. Googleスプレッドシートではスマートフォンからも同様に使用できますが、Excelの場合にはスマートフォン版でのサポートは限定的です。そのため、デスクトップ版で作成したワークブックをスマートフォンで参照する場合は注意が必要です