スプレッドシートのフィルター関数で「filter の範囲サイズが一致しません。」と出る原因と対処法|別シート・複数範囲も

スプレッドシートのFILTER関数で範囲サイズエラーが表示されている画面例 GAS(Google Apps Script)やスプレッドシートでの業務効率化
スプレッドシートのFILTER関数で「フィルターの範囲サイズが一致しません」などのエラーの原因と対処法をご紹介します。


スプレッドシートでfilter関数を使っていると、「filter の範囲サイズが一致しません。」といったエラーが表示されて、困った経験があるかもしれません。どのような原因があるのか、理由を特定し、適切な対処法も押きたいですよね。スプレッドシートのfilter関数で別シートも含めた抽出をする場合など、複雑な処理を行う場合にはいくつものエラーに注意を払うのが重要です。今回は、スプレッドシートのフィルター関数を使う際によくあるエラーと解決策を、別シートや複数範囲で起きやすい注意点も含めてご紹介します。


◎スプレッドシートのfilter関数で「フィルターの範囲サイズが一致しません」と表示される原因とは?


filter関数を使っていると、いくつか代表的なエラーに遭遇することがあります。まず、「FILTERの範囲サイズが一致しません」と表示されることがあるかもしれません。これは、[条件]で指定した要素(行or列)数と[絞り込みをする範囲]での数が異なることで生じるものです。filter関数は、条件として指定した行や列を1つずつ確認し、その結果に対応する位置のデータを抽出します。そのため、範囲の大きさが少しでもずれていると、どのデータとどの条件を対応させればよいのか分からなくなり、エラーになるのです。


特に注意したい点として、行数は合っているが列数が違う・列数は合っているが行数が違う・別シート参照で、見た目では気づきにくいズレがあるといった場合が挙げられます。正しく指定できているように見えても、実際には1列多い・少ないといったずれが起きていることは珍しくありません。次の項目で、よくある原因を具体例とあわせて見ていきましょう。



◎「filterの範囲サイズが一致しません」のエラーが出る理由

●抽出範囲と条件範囲の行数・列数が一致していない


「filter の範囲サイズが一致しません。」というエラーが表示される最も多い原因は、抽出範囲と条件範囲の行数または列数が一致していないことです。たとえば、抽出範囲がP3:AT3で、条件範囲がP4:AS4のように指定している場合、列数が1つずれているため「フィルターの範囲サイズが一致しません」とエラーとして認識されます。filter関数では、条件範囲の各セルを順番に確認し、その結果をもとに抽出範囲の同じ位置の値を取り出します。そのため、両者のサイズが完全に一致していなければなりません。

抽出範囲と条件範囲の列数が異なりFILTER関数でエラーが表示されている画面


特に注意が必要なのは、条件と抽出範囲が別の場所に離れている、別シートを参照しているといったケースです。このような場合、見比べたつもりでもズレに気づきにくくなります。一度、行数と列数を数え直し、完全に同じサイズになっているか確認してみましょう。



●「filter の範囲は、単一行か単一列にしてください。」と表示される


また、「FILTERの範囲は単一行か単一列にしてください。」と出てくることもあるかもしれません。これは、[条件]で参照している範囲が行も列も複数であることが原因です。filter関数では、抽出範囲は複数行・複数列でもOKである一方、条件範囲は単一行または単一列のみというルールがあります。条件は「横方向に見る」か「縦方向に見る」かのどちらか一方向でなければならず、行と列の両方が複数ある範囲は指定できません。もし「filter の範囲は、単一行か単一列にしてください。」のエラーが出た場合は、条件範囲が1行だけになっているかもしくは1列だけになっているかを確認し、不要な行や列を含めていないか見直してみましょう。

条件範囲が複数行かつ複数列になりFILTER関数でエラーが出ている状態



◎スプレッドシートのfilter関数で別シートの抽出を指定するときの注意点


スプレッドシートのfilter関数を使って別シートにある値を絞り込みをすることも可能です。この場合は、式で指定する範囲の前にシート名を入力しましょう。たとえば、「データ」という名前のシートから値を抽出する場合は、次のように書きます。
『=FILTER(‘データ’!P3:AT3,’データ’!P4:AT4)』
スプレッドシートのデータ抽出で別シートを参照する場合は、範囲サイズのズレが起きやすい点に注意が必要です。理由としては、
・シートを行き来しながら指定するため確認しづらい
・列の途中までしか見えておらず、端がずれている
・コピー&ペースト時に範囲が変わっている
といったことが挙げられます。スプレッドシートにおいてフィルター関数を別シートで使う場合でも、抽出範囲と条件範囲の行数・列数が完全に一致しているかを、シートごとに丁寧に確認しましょう。

FILTER関数を使って別シートからデータを抽出しているスプレッドシート



◎スプレッドシートのfilter(フィルタ)で複数範囲を指定する方法


▼Filter関数の基本的な式

FILTER関数を使って出勤日だけを抽出しているスプレッドシートの画面



スプレッドシートのfilterは複数範囲を取り出すことも可能です。たとえば、『=FILTER(P3:AT13,P4:AT4<>””)』と変更すると、3行目だけではなく、同じ列の13行目までのデータがまとめて表示されます。ただし、「3行目と13行目だけを取り出したい」といった離れた範囲の抽出は、1つのfilter関数では難しい場合も多いです。その際には、抽出用のシートを分けるあるいは複数のfilter関数を使うなど、用途に応じた工夫が必要になります。

FILTER関数を使って複数行のデータ範囲をまとめて抽出している画面



●スプレッドシートにおいて複数条件で一致するものを絞り込み抽出する方法


filter関数で複数条件を指定する場合、andやor関数は使いません。スプレッドシートにおいて複数条件で一致するものを抽出する際には代わりに、条件の書き方を工夫します。


どちらかの条件を満たす(OR)
『=FILTER(P3:AT13,(P4:AT4<>””)+P6:AT6<>””)』
このように、条件をかっこで囲って「+」でつなぐと、どちらか一方でも条件を満たす列の抽出が可能です。

FILTER関数でOR条件を使い複数条件のどちらかを満たす行を抽出している画面



どちらの条件も満たす(AND)
『=FILTER(P3:AT13,P4:AT4<>””,P6:AT6<>””)』
カンマで条件を並べることで、すべての条件を満たす場合のみ抽出できます。複数条件を使う場合は、条件範囲のサイズがずれていないか、より慎重に確認しましょう。

FILTER関数でAND条件を使いすべての条件に一致する行を抽出している画面



◎filter関数で結果が消える・反映されないときの対処法


filter関数は、条件に合うデータを自動で表示してくれる便利な関数ですが、結果が複数行・複数列に広がる点には注意が必要です。抽出先のセルにすでに別の値が入力されていると、データが上書きされるあるいはfilter関数が正しく反映されないかもしれません。

FILTER関数の結果が複数行に広がり既存データが上書きされたスプレッドシート


対処法としては、抽出専用の空白エリアを用意する・表示結果を1セルにまとめるといった方法があります。特に、TEXTJOIN関数と組み合わせることで、フィルターの結果を1つのセルにまとめて表示することも可能です。具体的な方法については、以下の記事で詳しく解説していますので、あわせて参考にしていただければ幸いです。



◎まとめ


今回は、スプレッドシートのfilter関数を使用する際によくあるエラーを、原因や具体的な対処法とともにご紹介しました。「filterの範囲サイズが一致しません」は抽出範囲と条件範囲の行数・列数のズレや、条件範囲の指定方法がルールとは異なることが原因として挙げられます。また、スプレッドシートのデータ抽出が別シートにも及ぶ場合はより慎重に確認するようにしましょう。最後までお読みいただき、ありがとうございました。

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