<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>データ抽出 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e3%83%87%e3%83%bc%e3%82%bf%e6%8a%bd%e5%87%ba/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 12 Jun 2026 21:55:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>データ抽出 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのQUERY関数の使い方｜SQLライクなデータ操作</title>
		<link>https://mashukabu.com/spreadsheet-query-function/</link>
					<comments>https://mashukabu.com/spreadsheet-query-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:31:47 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[Google独自関数]]></category>
		<category><![CDATA[QUERY]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[データ抽出]]></category>
		<category><![CDATA[データ集計]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4793</guid>

					<description><![CDATA[GoogleスプレッドシートのQUERY関数の使い方を基本から解説。SELECT・WHERE・ORDER BY・GROUP BYなどの句を実務データで紹介。VLOOKUP・FILTER・SORTとの使い分けも比較表でわかりやすく整理します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「売上データから東京支店だけ抽出して、金額順に並べ替えて、部署ごとの合計も出したい」。こんなふうに、やりたいことが増えてくると関数を何段も重ねることになりますよね。</p>



<p class="wp-block-paragraph">VLOOKUP・FILTER・SORT を組み合わせれば対応できますが、数式がどんどん長くなって読みにくくなります。</p>



<p class="wp-block-paragraph">そんなときに使えるのが <strong>QUERY関数</strong> です。SQLに似た命令文を1つの関数にまとめて書けるので、抽出・並べ替え・集計を一発で処理できます。</p>



<p class="wp-block-paragraph">この記事では、基本の書き方からGROUP BY・PIVOTまで、実務データを使ってわかりやすく解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">QUERY関数とは？</a></li><li><a href="#toc2" tabindex="0">QUERY関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">QUERY関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">SELECT｜列を選んで取り出す</a></li><li><a href="#toc7" tabindex="0">WHERE｜条件でデータを絞り込む</a></li><li><a href="#toc8" tabindex="0">ORDER BY｜並べ替える</a></li><li><a href="#toc9" tabindex="0">LIMIT｜取得件数を制限する</a></li></ol></li><li><a href="#toc10" tabindex="0">QUERY関数の応用テクニック</a><ol><li><a href="#toc11" tabindex="0">GROUP BY｜グループごとに集計する</a></li><li><a href="#toc12" tabindex="0">PIVOT｜クロス集計する</a></li><li><a href="#toc13" tabindex="0">LABEL｜列見出しを変更する</a></li><li><a href="#toc14" tabindex="0">FORMAT｜表示形式を指定する</a></li><li><a href="#toc15" tabindex="0">複数の句を組み合わせる</a></li><li><a href="#toc16" tabindex="0">セル参照をクエリに埋め込む</a></li></ol></li><li><a href="#toc17" tabindex="0">QUERY関数でよくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">日付をWHEREで使うときの注意</a></li></ol></li><li><a href="#toc19" tabindex="0">VLOOKUP・FILTER・SORTとの使い分け</a></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">QUERY関数とは？</span></h2>



<p class="wp-block-paragraph">QUERY関数（クエリ関数）は、SQLに似た命令文でデータを操作できるGoogleスプレッドシート専用の関数です。</p>



<p class="wp-block-paragraph">英語の「query（問い合わせ）」が名前の由来で、データベースに対して「こういうデータをちょうだい」と問い合わせるイメージです。</p>



<p class="wp-block-paragraph">たとえば、次のようなことが<strong>1つの数式</strong>でできます。</p>



<ul class="wp-block-list"><li>特定の列だけを取り出す（SELECT）</li><li>条件に合う行だけに絞り込む（WHERE）</li><li>データを並べ替える（ORDER BY）</li><li>グループごとに集計する（GROUP BY）</li><li>取得件数を制限する（LIMIT）</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>QUERY関数は<strong>Googleスプレッドシート専用</strong>です。Excelには同じ関数は存在しません。ExcelではFILTER関数やピボットテーブルで同様の処理を行います。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">QUERY関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=QUERY(データ, クエリ, [見出し])</code></pre>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>データ</td><td>必須</td><td>検索対象のセル範囲（例: <code>A1:E100</code>）</td></tr><tr><td>クエリ</td><td>必須</td><td>SQL風の命令文を文字列で記述（例: <code>"SELECT A, B"</code>）</td></tr><tr><td>見出し</td><td>任意</td><td>データの先頭にある見出し行の数。省略すると自動判定</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第2引数の「クエリ」がこの関数のキモです。ダブルクォーテーション <code>" "</code> の中にSQL風の命令を書きます。</p>



<p class="wp-block-paragraph">列の指定には <strong>A, B, C&#8230;</strong> のアルファベットを使います。データ範囲の左端列が A、2列目が B&#8230;という対応です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「SQLなんて知らない」と思った方もご安心ください。使う命令は <code>SELECT</code>（選ぶ）・<code>WHERE</code>（絞る）・<code>ORDER BY</code>（並べる）くらいです。英単語の意味そのままなので、すぐ慣れます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">QUERY関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">ここでは、次のような売上データ（A1:E6）を使って説明します。</p>



<figure class="wp-block-table"><table><thead><tr><th>担当者</th><th>支店</th><th>部署</th><th>商品</th><th>金額</th></tr></thead><tbody><tr><td>田中</td><td>東京</td><td>営業部</td><td>プランA</td><td>50000</td></tr><tr><td>鈴木</td><td>大阪</td><td>営業部</td><td>プランB</td><td>30000</td></tr><tr><td>佐藤</td><td>東京</td><td>企画部</td><td>プランA</td><td>45000</td></tr><tr><td>山田</td><td>名古屋</td><td>営業部</td><td>プランC</td><td>20000</td></tr><tr><td>高橋</td><td>大阪</td><td>企画部</td><td>プランB</td><td>60000</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc6">SELECT｜列を選んで取り出す</span></h3>



<p class="wp-block-paragraph">全5列のうち「担当者」と「金額」だけが欲しい場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT A, E&quot;)</code></pre>



<p class="wp-block-paragraph">A列（担当者）とE列（金額）だけが取り出されます。見出し行もそのまま含まれるのが便利なポイントです。</p>



<p class="wp-block-paragraph">全列を取得したい場合は <code>SELECT *</code> と書きます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT *&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc7">WHERE｜条件でデータを絞り込む</span></h3>



<p class="wp-block-paragraph">「東京支店だけ」に絞り込むには、WHERE句を使います。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * WHERE B = '東京'&quot;)</code></pre>



<p class="wp-block-paragraph">文字列の条件は<strong>シングルクォーテーション</strong> <code>' '</code> で囲むのがルールです。ダブルクォーテーションではないので注意してください。</p>



<p class="wp-block-paragraph">数値の条件はそのまま書けます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * WHERE E &gt;= 40000&quot;)</code></pre>



<p class="wp-block-paragraph">金額が40,000円以上のデータだけが出力されます。</p>



<h4 class="wp-block-heading">複数条件（AND / OR）</h4>



<p class="wp-block-paragraph">条件を組み合わせるには <code>AND</code> や <code>OR</code> を使います。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * WHERE B = '東京' AND E &gt;= 40000&quot;)</code></pre>



<p class="wp-block-paragraph">東京支店 <strong>かつ</strong> 金額40,000円以上の行だけが返ります。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * WHERE B = '東京' OR B = '大阪'&quot;)</code></pre>



<p class="wp-block-paragraph">東京 <strong>または</strong> 大阪の行が返ります。</p>



<h4 class="wp-block-heading">部分一致（contains / starts with / ends with）</h4>



<p class="wp-block-paragraph">「プラン」を含む商品を探したい場合は <code>contains</code> を使います。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * WHERE D contains 'プラン'&quot;)</code></pre>



<p class="wp-block-paragraph">前方一致は <code>starts with</code>、後方一致は <code>ends with</code> です。</p>



<h3 class="wp-block-heading"><span id="toc8">ORDER BY｜並べ替える</span></h3>



<p class="wp-block-paragraph">金額の大きい順に並べたい場合は ORDER BY に <code>DESC</code>（降順）を付けます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * ORDER BY E DESC&quot;)</code></pre>



<p class="wp-block-paragraph">小さい順（昇順）は <code>ASC</code> です。省略すると昇順になります。</p>



<p class="wp-block-paragraph">複数列で並べ替えることもできます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * ORDER BY B ASC, E DESC&quot;)</code></pre>



<p class="wp-block-paragraph">支店名の昇順で並べてから、同じ支店内では金額の降順になります。</p>



<h3 class="wp-block-heading"><span id="toc9">LIMIT｜取得件数を制限する</span></h3>



<p class="wp-block-paragraph">上位3件だけ取り出したいときは LIMIT を使います。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * ORDER BY E DESC LIMIT 3&quot;)</code></pre>



<p class="wp-block-paragraph">ORDER BY と組み合わせれば「金額トップ3」のような使い方ができます。</p>



<h2 class="wp-block-heading"><span id="toc10">QUERY関数の応用テクニック</span></h2>



<h3 class="wp-block-heading"><span id="toc11">GROUP BY｜グループごとに集計する</span></h3>



<p class="wp-block-paragraph">支店ごとの売上合計を出すには、GROUP BY と集計関数 <code>sum()</code> を組み合わせます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT B, sum(E) GROUP BY B&quot;)</code></pre>



<p class="wp-block-paragraph">結果はこのようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>支店</th><th>sum 金額</th></tr></thead><tbody><tr><td>大阪</td><td>90000</td></tr><tr><td>名古屋</td><td>20000</td></tr><tr><td>東京</td><td>95000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使える集計関数は次の5つです。</p>



<figure class="wp-block-table"><table><thead><tr><th>集計関数</th><th>説明</th></tr></thead><tbody><tr><td><code>sum(列)</code></td><td>合計</td></tr><tr><td><code>avg(列)</code></td><td>平均</td></tr><tr><td><code>count(列)</code></td><td>件数</td></tr><tr><td><code>max(列)</code></td><td>最大値</td></tr><tr><td><code>min(列)</code></td><td>最小値</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">WHERE + GROUP BY の組み合わせ</h4>



<p class="wp-block-paragraph">営業部だけの支店別合計を出したい場合はこう書きます。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT B, sum(E) WHERE C = '営業部' GROUP BY B&quot;)</code></pre>



<p class="wp-block-paragraph">WHERE で先に絞り込んでから GROUP BY で集計する流れです。</p>



<h3 class="wp-block-heading"><span id="toc12">PIVOT｜クロス集計する</span></h3>



<p class="wp-block-paragraph">「支店ごと × 部署ごと」のクロス集計を作るには PIVOT を使います。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT B, sum(E) GROUP BY B PIVOT C&quot;)</code></pre>



<p class="wp-block-paragraph">行が支店、列が部署の集計表が一発で出力されます。Excelのピボットテーブルに近い機能を、数式だけで実現できるのが強みです。</p>



<h3 class="wp-block-heading"><span id="toc13">LABEL｜列見出しを変更する</span></h3>



<p class="wp-block-paragraph">GROUP BY の結果は見出しが <code>sum 金額</code> のようになります。わかりにくい場合は LABEL で書き換えましょう。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT B, sum(E) GROUP BY B LABEL sum(E) '売上合計'&quot;)</code></pre>



<p class="wp-block-paragraph"><code>LABEL 列指定 '表示名'</code> の形式で指定します。</p>



<h3 class="wp-block-heading"><span id="toc14">FORMAT｜表示形式を指定する</span></h3>



<p class="wp-block-paragraph">金額にカンマ区切りを付けたい場合は FORMAT を使います。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT A, E FORMAT E '#,##0'&quot;)</code></pre>



<p class="wp-block-paragraph">表示形式のコードは、セルの表示形式設定と同じ書き方です。</p>



<h3 class="wp-block-heading"><span id="toc15">複数の句を組み合わせる</span></h3>



<p class="wp-block-paragraph">QUERY関数の真価は、複数の句を1つの数式にまとめられる点です。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT B, sum(E) WHERE E &gt;= 30000 GROUP BY B ORDER BY sum(E) DESC LABEL sum(E) '売上合計'&quot;)</code></pre>



<p class="wp-block-paragraph">この1行で「金額30,000円以上のデータを支店ごとに集計し、合計の大きい順に並べ替え、見出しも整える」ができます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>句の記述順序は決まっています。<strong>SELECT → WHERE → GROUP BY → PIVOT → ORDER BY → LIMIT → OFFSET → LABEL → FORMAT → OPTIONS</strong> の順に書いてください。順番を間違えるとエラーになります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">セル参照をクエリに埋め込む</span></h3>



<p class="wp-block-paragraph">条件をセルの値で動的に切り替えたい場合は、文字列結合を使います。</p>



<p class="wp-block-paragraph">たとえば G1 セルに支店名が入っているとします。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E6, &quot;SELECT * WHERE B = '&quot;&amp;G1&amp;&quot;'&quot;)</code></pre>



<p class="wp-block-paragraph"><code>"SELECT * WHERE B = '"</code> と <code>"'"</code> の間に <code>&G1&</code> を挟む形です。ちょっとむずかしく見えますが、やっていることはシンプルです。クエリ文字列の中にセルの値を差し込んでいるだけです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>プルダウンと組み合わせると、選択した値に応じてデータが自動で切り替わるダッシュボードが作れます。プルダウンの作り方は <a href="https://mashukabu.com/spreadsheet-pulldown/">スプレッドシートのプルダウン作り方｜色付け・連動まで解説</a> を参考にしてください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc17">QUERY関数でよくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>クエリ文字列の構文エラー</td><td>引用符の閉じ忘れ、句の順序誤りを確認する</td></tr><tr><td><code>#REF!</code></td><td>出力先に既存データがある</td><td>出力先の下方向に空きスペースを確保する</td></tr><tr><td><code>#N/A</code></td><td>該当データが0件</td><td>WHERE条件を確認する。IFERROR で空表示にできる</td></tr><tr><td>ヘッダーが2行出る</td><td>第3引数（見出し）の指定ミス</td><td><code>=QUERY(A1:E6, "...", 1)</code> のように明示指定する</td></tr><tr><td>文字列条件が効かない</td><td>シングルクォーテーション忘れ</td><td>文字列は <code>'値'</code> で囲む（ダブルクォーテーション不可）</td></tr><tr><td>日付の比較が効かない</td><td>日付の書き方が違う</td><td><code>date '2026-01-01'</code> の形式で書く</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">日付をWHEREで使うときの注意</span></h3>



<p class="wp-block-paragraph">日付を条件にする場合は <code>date 'yyyy-MM-dd'</code> という特別な書き方が必要です。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E100, &quot;SELECT * WHERE A &gt; date '2026-01-01'&quot;)</code></pre>



<p class="wp-block-paragraph">セル参照で日付を指定する場合は TEXT 関数で変換します。</p>



<pre class="wp-block-code"><code>=QUERY(A1:E100, &quot;SELECT * WHERE A &gt; date '&quot;&amp;TEXT(G1,&quot;yyyy-MM-dd&quot;)&amp;&quot;'&quot;)</code></pre>



<h2 class="wp-block-heading"><span id="toc19">VLOOKUP・FILTER・SORTとの使い分け</span></h2>



<p class="wp-block-paragraph">QUERY関数は万能ですが、シンプルな処理なら他の関数のほうが手軽です。使い分けの目安をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>おすすめの関数</th><th>理由</th></tr></thead><tbody><tr><td>1つの値を検索して返す</td><td><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP</a></td><td>構文がシンプルで直感的</td></tr><tr><td>条件に合う行を抽出する</td><td><a href="https://mashukabu.com/spreadsheet-filter-function/">FILTER</a></td><td>配列を返すので一覧表示に向く</td></tr><tr><td>データを並べ替える</td><td><a href="https://mashukabu.com/spreadsheet-sort-sortn-sortby/">SORT / SORTN / SORTBY</a></td><td>並べ替え専用で高速</td></tr><tr><td>重複を除いた一覧を出す</td><td><a href="https://mashukabu.com/spreadsheet-unique-function/">UNIQUE</a></td><td>1つの関数で完結する</td></tr><tr><td>抽出 + 並べ替え + 集計を一括</td><td><strong>QUERY</strong></td><td>複数の処理を1つの数式にまとめられる</td></tr><tr><td>クロス集計表を作りたい</td><td><strong>QUERY（PIVOT句）</strong></td><td>ピボットテーブルを数式で実現できる</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>迷ったら「やりたいことが2つ以上あるか？」で判断してみてください。抽出だけならFILTER、並べ替えだけならSORT。でも「抽出して並べ替えて集計もしたい」なら、QUERY関数の出番です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc20">まとめ</span></h2>



<p class="wp-block-paragraph">QUERY関数は、Googleスプレッドシートで使える最強のデータ操作関数です。</p>



<p class="wp-block-paragraph">この記事で紹介した句を振り返っておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>句</th><th>役割</th><th>使用例</th></tr></thead><tbody><tr><td>SELECT</td><td>列を選ぶ</td><td><code>SELECT A, B, E</code></td></tr><tr><td>WHERE</td><td>条件で絞る</td><td><code>WHERE B = '東京'</code></td></tr><tr><td>ORDER BY</td><td>並べ替える</td><td><code>ORDER BY E DESC</code></td></tr><tr><td>LIMIT</td><td>件数を制限</td><td><code>LIMIT 10</code></td></tr><tr><td>GROUP BY</td><td>グループ集計</td><td><code>GROUP BY B</code></td></tr><tr><td>PIVOT</td><td>クロス集計</td><td><code>PIVOT C</code></td></tr><tr><td>LABEL</td><td>見出し変更</td><td><code>LABEL sum(E) '合計'</code></td></tr><tr><td>FORMAT</td><td>表示形式</td><td><code>FORMAT E '#,##0'</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">まずは SELECT と WHERE だけで十分です。慣れてきたら GROUP BY や PIVOT にも挑戦してみてください。</p>



<p class="wp-block-paragraph">データ操作の効率がぐっと上がりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-query-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのSORTN関数の使い方｜上位N件を一発抽出</title>
		<link>https://mashukabu.com/spreadsheet-sortn-function/</link>
					<comments>https://mashukabu.com/spreadsheet-sortn-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:30:17 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[SORTN]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[データ抽出]]></category>
		<category><![CDATA[ランキング]]></category>
		<category><![CDATA[並べ替え]]></category>
		<category><![CDATA[配列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4757</guid>

					<description><![CDATA[スプレッドシートのSORTN関数で上位N件を自動抽出する方法を解説。同順位の扱いを決めるdisplay_tiesの使い分け、SORT・LARGE関数との違いも比較。売上ランキングやトップ社員リストの作成に即使えます。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「売上データの上位5件だけ取り出したい」「ランキング表を自動で作りたい」。こんな場面、仕事でよくありますよね。</p>



<p class="wp-block-paragraph">SORT関数で並べ替えると全件が返ってきてしまい、手動で上位だけ切り出すのは面倒です。データが更新されるたびにやり直すのも手間がかかります。</p>



<p class="wp-block-paragraph">そんなときに便利なのが <strong>SORTN関数</strong> です。並べ替えと件数指定を1つの数式で完結でき、上位N件を自動で取り出せます。</p>



<p class="wp-block-paragraph">この記事では、SORTN関数の基本から同順位モードの使い分け、FILTER関数との組み合わせまで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SORTN関数とは？（スプレッドシート独自の関数）</a><ol><li><a href="#toc2" tabindex="0">構文</a></li><li><a href="#toc3" tabindex="0">引数の意味</a></li></ol></li><li><a href="#toc4" tabindex="0">SORTN関数の基本的な使い方</a><ol><li><a href="#toc5" tabindex="0">売上上位3件を抽出する</a></li><li><a href="#toc6" tabindex="0">複数列のデータをそのまま抽出する</a></li></ol></li><li><a href="#toc7" tabindex="0">display_ties（同順位モード）の使い分け</a><ol><li><a href="#toc8" tabindex="0">モード0（デフォルト）</a></li><li><a href="#toc9" tabindex="0">モード1</a></li><li><a href="#toc10" tabindex="0">モード2</a></li><li><a href="#toc11" tabindex="0">モード3</a></li></ol></li><li><a href="#toc12" tabindex="0">SORT・LARGE・SMALL関数との違い</a><ol><li><a href="#toc13" tabindex="0">SORTとの違い</a></li><li><a href="#toc14" tabindex="0">LARGE/SMALLとの違い</a></li><li><a href="#toc15" tabindex="0">使い分けの判断基準</a></li></ol></li><li><a href="#toc16" tabindex="0">実務でよく使うSORTN活用パターン</a><ol><li><a href="#toc17" tabindex="0">FILTER+SORTNで条件付きランキング</a></li><li><a href="#toc18" tabindex="0">複数条件での並べ替え</a></li><li><a href="#toc19" tabindex="0">売上ランキングTOP5を自動更新</a></li></ol></li><li><a href="#toc20" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc21" tabindex="0">まとめ</a><ol><li><a href="#toc22" tabindex="0">この記事を書いた人</a></li><li><a href="#toc23" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SORTN関数とは？（スプレッドシート独自の関数）</span></h2>



<p class="wp-block-paragraph">SORTN（ソートエヌ）は、データを並べ替えたうえで <strong>上位N件だけを返す</strong> 関数です。「Sort」は並べ替え、「N」は件数を意味します。</p>



<p class="wp-block-paragraph">SORT関数が全件を返すのに対し、SORTNは指定した件数だけを抽出します。売上ランキングやトップ社員リストの作成にぴったりの関数です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>SORTN関数はGoogleスプレッドシート独自の関数です。Excelには同等の機能がありません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">構文</span></h3>



<pre class="wp-block-code"><code>=SORTN(範囲, [n], [display_ties_mode], [並べ替え列1, 昇順か1, ...])</code></pre>



<h3 class="wp-block-heading"><span id="toc3">引数の意味</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>範囲</td><td>必須</td><td>並べ替えたいデータ範囲（例: A2:D100）</td></tr><tr><td>n</td><td>任意</td><td>返す行数。省略すると 1（1行だけ返す）</td></tr><tr><td>display_ties_mode</td><td>任意</td><td>同じ値があるときの扱い方。省略すると 0</td></tr><tr><td>並べ替え列1</td><td>任意</td><td>基準にする列番号（1始まり）</td></tr><tr><td>昇順か1</td><td>任意</td><td>TRUE = 昇順 / FALSE = 降順</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">並べ替え列と昇順かのペアは、複数組み繰り返して指定できます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>引数が多く見えますが、最低限必要なのは「範囲」だけです。=SORTN(A2:D10) と書くと、1列目の昇順で1行だけ返します。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">SORTN関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">この記事では、次の売上データを使って説明します。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（担当者）</th><th>B列（支店）</th><th>C列（商品）</th><th>D列（金額）</th></tr></thead><tbody><tr><td>2行目</td><td>田中</td><td>東京</td><td>ノートPC</td><td>150000</td></tr><tr><td>3行目</td><td>佐藤</td><td>大阪</td><td>モニター</td><td>45000</td></tr><tr><td>4行目</td><td>鈴木</td><td>東京</td><td>キーボード</td><td>8000</td></tr><tr><td>5行目</td><td>高橋</td><td>名古屋</td><td>ノートPC</td><td>140000</td></tr><tr><td>6行目</td><td>伊藤</td><td>大阪</td><td>マウス</td><td>3000</td></tr><tr><td>7行目</td><td>山本</td><td>東京</td><td>モニター</td><td>45000</td></tr><tr><td>8行目</td><td>中村</td><td>名古屋</td><td>ノートPC</td><td>150000</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc5">売上上位3件を抽出する</span></h3>



<p class="wp-block-paragraph">金額が大きい順に上位3件を取り出してみましょう。空いているセル（たとえばF2）に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 3, 0, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">各引数の意味は次のとおりです。</p>



<ul class="wp-block-list"><li>A2:D8 … 対象データの範囲</li><li>3 … 上位3件を返す</li><li>0 … 同順位モードはデフォルト（ちょうど3件）</li><li>4 … 4列目（金額）で並べ替え</li><li>FALSE … 降順（大きい順）</li></ul>



<p class="wp-block-paragraph">結果は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>F列</th><th>G列</th><th>H列</th><th>I列</th></tr></thead><tbody><tr><td>田中</td><td>東京</td><td>ノートPC</td><td>150000</td></tr><tr><td>中村</td><td>名古屋</td><td>ノートPC</td><td>150000</td></tr><tr><td>高橋</td><td>名古屋</td><td>ノートPC</td><td>140000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">金額の大きい順に3行だけが返りました。田中と中村は同額ですが、モード0なので3件ちょうどです。</p>



<h3 class="wp-block-heading"><span id="toc6">複数列のデータをそのまま抽出する</span></h3>



<p class="wp-block-paragraph">SORTNは範囲に含まれるすべての列をそのまま返します。上の例でも、担当者・支店・商品・金額の4列すべてが出力されています。</p>



<p class="wp-block-paragraph">LARGE関数のように「値だけ」ではなく <strong>行全体を取り出せる</strong> のがSORTN関数の大きな強みです。担当者名や支店名もセットで確認できるので、ランキング表の作成に向いています。</p>



<h2 class="wp-block-heading"><span id="toc7">display_ties（同順位モード）の使い分け</span></h2>



<p class="wp-block-paragraph">SORTN関数の第3引数 display_ties_mode は、同じ値が複数あるときの処理方法を決めるパラメータです。ここがSORTN関数を使いこなすポイントになります。</p>



<h3 class="wp-block-heading"><span id="toc8">モード0（デフォルト）</span></h3>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 3, 0, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">厳密にN件だけを返します。同じ値があっても件数は変わりません。</p>



<p class="wp-block-paragraph">先ほどの例では、金額150000の行が2つありますが、結果は3件ちょうどです。「表に3行分しかスペースがない」など、件数を固定したいときに使います。</p>



<h3 class="wp-block-heading"><span id="toc9">モード1</span></h3>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 3, 1, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">N件に加えて、同順位の行もすべて含めます。結果がN件を超える場合があります。</p>



<p class="wp-block-paragraph">この例では上位3件を指定していますが、1位タイが2名います。結果は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>F列</th><th>G列</th><th>H列</th><th>I列</th></tr></thead><tbody><tr><td>田中</td><td>東京</td><td>ノートPC</td><td>150000</td></tr><tr><td>中村</td><td>名古屋</td><td>ノートPC</td><td>150000</td></tr><tr><td>高橋</td><td>名古屋</td><td>ノートPC</td><td>140000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この場合はモード0と同じ3件です。しかし仮に3位にも同額の人がいれば、4件以上返ります。「上位3位まで全員表彰する」ような場面で便利です。</p>



<h3 class="wp-block-heading"><span id="toc10">モード2</span></h3>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 3, 2, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">並べ替え基準列の値が同じ行を重複とみなし、先頭行だけを残してN件を返します。</p>



<p class="wp-block-paragraph">たとえばD列（金額）を基準にした場合、150000が2行あれば1行に絞ったうえでN件を抽出します。<a href="https://mashukabu.com/spreadsheet-unique-function/">UNIQUE関数</a>と似た動きですが、SORTNならソートと件数制限を同時にこなせます。</p>



<h3 class="wp-block-heading"><span id="toc11">モード3</span></h3>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 2, 3, 3, TRUE)</code></pre>



<p class="wp-block-paragraph">指定した列のユニークな値を上位N種類選び出し、該当する行をすべて返します。</p>



<p class="wp-block-paragraph">上の例では、3列目（商品名）を基準にユニークな商品を2種類取り出します。商品名のアルファベット順で先頭2種が選ばれ、それに該当するすべての行が返ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>F列</th><th>G列</th><th>H列</th><th>I列</th></tr></thead><tbody><tr><td>鈴木</td><td>東京</td><td>キーボード</td><td>8000</td></tr><tr><td>伊藤</td><td>大阪</td><td>マウス</td><td>3000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「キーボード」と「マウス」がユニーク上位2種として選ばれました。「人気商品トップ3の全データを一覧で見たい」のような場面に向いています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>モード3は少しクセがあります。N件ではなく「N種類」を返す点に注意してください。1種類に複数行が該当すれば、結果はN行を超えます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc12">SORT・LARGE・SMALL関数との違い</span></h2>



<h3 class="wp-block-heading"><span id="toc13">SORTとの違い</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-sort-sortn-sortby/">SORT関数</a>は全件を並べ替えて返します。一方、SORTNは上位N件だけを返します。</p>



<pre class="wp-block-code"><code>=SORT(A2:D8, 4, FALSE)         … 全7件が返る
=SORTN(A2:D8, 3, 0, 4, FALSE)  … 上位3件だけ返る</code></pre>



<p class="wp-block-paragraph">「全体を見たい」ならSORT、「上位だけでいい」ならSORTNと使い分けましょう。</p>



<h3 class="wp-block-heading"><span id="toc14">LARGE/SMALLとの違い</span></h3>



<p class="wp-block-paragraph">LARGE関数やSMALL関数は、指定した順位の <strong>値を1つだけ</strong> 返します。</p>



<pre class="wp-block-code"><code>=LARGE(D2:D8, 1)               … 150000（最大値のみ）
=SORTN(A2:D8, 1, 0, 4, FALSE)  … 田中, 東京, ノートPC, 150000（行全体）</code></pre>



<p class="wp-block-paragraph">LARGE/SMALLは「何位の値は？」を調べるのに向いています。SORTNは「上位N件の行データをまるごと取り出す」のに向いています。</p>



<h3 class="wp-block-heading"><span id="toc15">使い分けの判断基準</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>最適な関数</th></tr></thead><tbody><tr><td>データ全件を並べ替えたい</td><td>SORT</td></tr><tr><td>上位N件の行をまるごと取り出したい</td><td>SORTN</td></tr><tr><td>N番目の値だけ知りたい</td><td>LARGE / SMALL</td></tr><tr><td>条件付きで上位N件を出したい</td><td>FILTER + SORTN</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc16">実務でよく使うSORTN活用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc17">FILTER+SORTNで条件付きランキング</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-filter-function/">FILTER関数</a>とSORTNを組み合わせると、条件付きのランキングを作れます。</p>



<p class="wp-block-paragraph">「東京支店の売上トップ2」を取り出す例です。</p>



<pre class="wp-block-code"><code>=SORTN(FILTER(A2:D8, B2:B8=&quot;東京&quot;), 2, 0, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">FILTER関数で東京支店のデータだけを抽出し、SORTNで金額上位2件に絞っています。抽出と並べ替えと件数制限が、1つの数式で完結します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>SORTNの列番号は、FILTER結果の中での列番号です。元データのシート上の列位置とは異なる場合があるので注意してください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc18">複数条件での並べ替え</span></h3>



<p class="wp-block-paragraph">SORTNでも複数の並べ替え基準を指定できます。「支店の昇順 → 同じ支店内は金額の降順」で上位5件を取り出す例です。</p>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 5, 0, 2, TRUE, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">並べ替え列と昇順かのペアを続けて書くだけです。最初の基準が同じ値の場合に、2番目の基準で順序が決まります。</p>



<h3 class="wp-block-heading"><span id="toc19">売上ランキングTOP5を自動更新</span></h3>



<p class="wp-block-paragraph">ダッシュボードに「売上TOP5」を常に表示しておきたい場面に最適な数式です。</p>



<pre class="wp-block-code"><code>=SORTN(A2:D100, 5, 0, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">データ範囲を広めに取っておけば、行が追加されても自動で最新の上位5件が表示されます。手動でランキングを更新する必要がありません。</p>



<p class="wp-block-paragraph">月次レポートや週次ミーティングの資料として、常に最新のランキングが確認できます。</p>



<h2 class="wp-block-heading"><span id="toc20">よくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#REF!</td><td>結果の展開先にデータがある</td><td>スピル先のセルを空にする</td></tr><tr><td>#VALUE!</td><td>nに0以下の値を指定した</td><td>nは1以上の整数を指定する</td></tr><tr><td>#VALUE!</td><td>並べ替え列が範囲外</td><td>列番号が範囲の列数以内か確認する</td></tr><tr><td>#VALUE!</td><td>display_ties_modeに0〜3以外の値を指定した</td><td>0〜3の整数を指定する</td></tr><tr><td>#N/A</td><td>範囲が空（データなし）</td><td>IFERROR関数でエラー時のメッセージを設定する</td></tr><tr><td>結果が期待と違う</td><td>display_ties_modeの指定ミス</td><td>第3引数の0〜3を見直す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">#REF! エラーの対処例です。</p>



<pre class="wp-block-code"><code>=SORTN(A2:D8, 3, 0, 4, FALSE)</code></pre>



<p class="wp-block-paragraph">この数式をF2に入れた場合、F2〜I4の範囲にデータがあるとエラーになります。出力先の下方向に十分な空きを確保してください。</p>



<p class="wp-block-paragraph">エラーを非表示にしたい場合は、IFERROR関数で囲みます。</p>



<pre class="wp-block-code"><code>=IFERROR(SORTN(A2:D8, 3, 0, 4, FALSE), &quot;データがありません&quot;)</code></pre>



<h2 class="wp-block-heading"><span id="toc21">まとめ</span></h2>



<p class="wp-block-paragraph">この記事では、スプレッドシートのSORTN関数の使い方を解説しました。</p>



<ul class="wp-block-list"><li>SORTN関数は <strong>上位N件の行データをまるごと取り出せる</strong> Sheets独自の関数</li><li>第3引数の display_ties_mode で同順位の扱いを細かく制御できる</li><li>モード0は件数固定、モード1は同順位を含める、モード2は重複除去、モード3はユニーク種類指定</li><li>FILTER関数と組み合わせれば条件付きランキングも1つの数式で作れる</li><li>SORT関数は全件返し、LARGE/SMALLは値1つだけ。SORTNは行全体をN件返す</li></ul>



<p class="wp-block-paragraph">まずは <code>=SORTN(範囲, 3, 0, 列番号, FALSE)</code> の基本形から試してみてください。売上ランキングやトップ社員リストが、数式1つで自動作成できるようになります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc22">この記事を書いた人</span></h3>



<p class="wp-block-paragraph">biz-tactics編集部。事務職の現場で本当に使えるExcel・スプレッドシート・AIの技を発信しています。</p>



<h3 class="wp-block-heading"><span id="toc23">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-sort-sortn-sortby/">スプレッドシートのSORT・SORTN・SORTBY関数の使い方｜データを自動で並べ替える</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方｜条件抽出を自動化する方法</a></li><li><a href="https://mashukabu.com/spreadsheet-unique-function/">スプレッドシートのUNIQUE関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-sortn-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのFILTER関数の使い方｜条件抽出を自動化する実務7パターン</title>
		<link>https://mashukabu.com/spreadsheet-filter-function/</link>
					<comments>https://mashukabu.com/spreadsheet-filter-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 16 Mar 2026 14:29:59 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ARRAYFORMULA]]></category>
		<category><![CDATA[FILTER関数]]></category>
		<category><![CDATA[QUERY関数]]></category>
		<category><![CDATA[SORT関数]]></category>
		<category><![CDATA[UNIQUE関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[データ抽出]]></category>
		<category><![CDATA[動的レポート]]></category>
		<category><![CDATA[条件抽出]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3920</guid>

					<description><![CDATA[GoogleスプレッドシートのFILTER関数の使い方を基本から解説。AND/ORの複数条件の指定方法、SORT・UNIQUE・COUNTIFとの組み合わせ、プルダウン連動の動的レポート、Excel版との違い、QUERY・ARRAYFORMULAとの使い分けまで、実務でそのまま使えるサンプル付きで紹介します。`#N/A` や `#REF!` などのエラー対処、表記揺れで0行になる場合のデバッグ手順もまとめています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「売上データから東京支店だけ抜き出したい」「今月の受注だけ別シートに一覧化したい」。事務の現場でよくある作業ですよね。</p>



<p class="wp-block-paragraph">メニューの <strong>フィルター機能</strong> で手動で絞り込む方法もあります。ただ、条件が変わるたびにポチポチ操作するのは面倒ですし、元データに手を加えると共有メンバーに迷惑がかかることもあります。</p>



<p class="wp-block-paragraph">そんなときに使いたいのが <strong>FILTER関数</strong> です。元データはそのままに、条件に一致する行だけを別のセル範囲に自動で吐き出してくれます。プルダウンと組み合わせれば、選んだ条件で表示が切り替わる「動的レポート」もコードなしで作れますよ。</p>



<p class="wp-block-paragraph">この記事ではFILTER関数の基本構文から、AND/ORの複数条件、プルダウン連動・期間絞り込み・SORTやUNIQUEとの組み合わせなど、実務でそのまま使える7パターンを紹介します。<code>#N/A</code> や <code>#REF!</code> などのエラー対処、Excel版との違い、<a href="https://mashukabu.com/spreadsheet-query-function/">QUERY関数</a>・<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA</a>との使い分けまで整理しますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのFILTER関数とは？条件に合う行をまるごと取り出す関数</a><ol><li><a href="#toc2" tabindex="0">FILTER関数で何ができる？</a></li><li><a href="#toc3" tabindex="0">メニューの「フィルター機能」との違い</a></li></ol></li><li><a href="#toc4" tabindex="0">FILTER関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の説明</a></li><li><a href="#toc7" tabindex="0">FILTER関数の動作イメージ早見表</a></li></ol></li><li><a href="#toc8" tabindex="0">FILTER関数の基本的な使い方</a></li><li><a href="#toc9" tabindex="0">FILTER関数で複数条件を指定する（AND・OR）</a><ol><li><a href="#toc10" tabindex="0">AND条件（すべて満たす）</a></li><li><a href="#toc11" tabindex="0">OR条件（いずれかを満たす）</a></li><li><a href="#toc12" tabindex="0">AND/OR を組み合わせる</a></li></ol></li><li><a href="#toc13" tabindex="0">FILTER関数の実務テンプレ7パターン</a><ol><li><a href="#toc14" tabindex="0">パターン1: プルダウン連動の動的レポート</a></li><li><a href="#toc15" tabindex="0">パターン2: 期間で絞り込む（今月・先月・直近30日）</a></li><li><a href="#toc16" tabindex="0">パターン3: FILTER + SORT で抽出結果を並べ替え</a></li><li><a href="#toc17" tabindex="0">パターン4: 特定の列だけを取り出す（配列リテラル / CHOOSECOLS）</a></li><li><a href="#toc18" tabindex="0">パターン5: FILTER + UNIQUE で重複を除く</a></li><li><a href="#toc19" tabindex="0">パターン6: FILTER + COUNTA / SUM で集計</a></li><li><a href="#toc20" tabindex="0">パターン7: 条件セルが空のとき全件表示</a></li></ol></li><li><a href="#toc21" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">データがあるのに0行になるケース（デバッグ手順）</a></li></ol></li><li><a href="#toc23" tabindex="0">FILTERとQUERY・ARRAYFORMULAの違い・使い分け</a><ol><li><a href="#toc24" tabindex="0">FILTER と QUERY の選び分けフロー</a></li><li><a href="#toc25" tabindex="0">FILTER と XLOOKUP・XMATCH の違い</a></li><li><a href="#toc26" tabindex="0">Excel版FILTERとの違い</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a><ol><li><a href="#toc28" tabindex="0">この記事を書いた人</a></li><li><a href="#toc29" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのFILTER関数とは？条件に合う行をまるごと取り出す関数</span></h2>



<p class="wp-block-paragraph">FILTER関数（読み方: フィルター関数）は、<strong>指定した範囲の中から条件に一致する行（または列）だけを抜き出して別の場所に出力する関数</strong>です。関数名は英語の「filter（ろ過する・選別する）」に由来していて、データの中から必要なものだけをすくい上げるイメージで覚えると分かりやすいですね。</p>



<p class="wp-block-paragraph">たとえば社員リストから「営業部の人だけ」を抜き出したり、売上表から「100万円以上の案件だけ」を取り出したりできます。元のデータには触れずに別シートへレポートを自動生成できるので、共有ファイルで安全に使えるのも嬉しいポイントです。</p>



<h3 class="wp-block-heading"><span id="toc2">FILTER関数で何ができる？</span></h3>



<p class="wp-block-paragraph">FILTER関数が活躍するのは、おもに次のような場面です。</p>



<ul class="wp-block-list"><li>売上一覧から <strong>特定の支店・部署・担当者だけ</strong> を取り出したいとき</li><li>受注台帳から <strong>「今月」「今週」など期間で絞った行だけ</strong> を別シートに展開したいとき</li><li>申請一覧から <strong>ステータスが「承認待ち」の行だけ</strong> をダッシュボードに表示したいとき</li><li>プルダウンと連動させて <strong>選んだ条件で表示が切り替わる動的レポート</strong> を作りたいとき</li><li>元データを壊さずに、<strong>別シートで集計用の中間テーブル</strong> を作りたいとき</li></ul>



<p class="wp-block-paragraph">NOTE: FILTER関数はGoogleスプレッドシートの全バージョンで使えます。Excelでも Microsoft 365 / Excel 2021 以降で対応していますが、引数の仕様が一部異なります（後述の「Excel版との違い」を参照）。古いExcel（2019以前）と互換性が必要なファイルでは使えないので、その場合はオートフィルターやIF＋配列数式で代用してください。</p>



<h3 class="wp-block-heading"><span id="toc3">メニューの「フィルター機能」との違い</span></h3>



<p class="wp-block-paragraph">スプレッドシートにはメニュー > データ > 「フィルタを作成」というUI操作のフィルター機能もありますが、関数版とは性格が大きく異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FILTER関数</th><th>フィルター機能（UI）</th></tr></thead><tbody><tr><td>元データへの影響</td><td>一切変更しない（別セルに出力）</td><td>表示を直接絞り込む（裏では全行残る）</td></tr><tr><td>結果の出力先</td><td>任意の別セル・別シート</td><td>元データの行を非表示にして再描画</td></tr><tr><td>条件変更</td><td>数式やプルダウンを変えるだけで再計算</td><td>毎回メニュー操作が必要</td></tr><tr><td>共有ファイル</td><td>他人の表示に影響しない</td><td>フィルタ表示モードを使わないと他人の表示まで変わる</td></tr><tr><td>レポート自動化</td><td>得意（数式で完結）</td><td>不向き（手動操作前提）</td></tr><tr><td>抽出結果の再利用</td><td>そのまま参照・集計可能</td><td>コピペが必要</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ざっくり言うと、<strong>一度きりの確認ならUI、繰り返し見るレポートなら関数</strong>と覚えておくと使い分けがラクです。</p>



<h2 class="wp-block-heading"><span id="toc4">FILTER関数の構文と引数</span></h2>



<h3 class="wp-block-heading"><span id="toc5">基本構文</span></h3>



<pre class="wp-block-code"><code>=FILTER(範囲, 条件1, [条件2, ...])</code></pre>



<p class="wp-block-paragraph">最初に抽出したい「範囲」を指定し、その後にTRUE / FALSEを返す「条件」を1つ以上書きます。条件を複数並べるとすべてAND条件として適用されます。</p>



<h3 class="wp-block-heading"><span id="toc6">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>範囲</td><td>必須</td><td>抽出対象のデータ範囲（例: <code>A2:D100</code>）。1列だけでも複数列でもOK</td></tr><tr><td>条件1</td><td>必須</td><td>TRUE / FALSEを返す配列の条件式（例: <code>B2:B100="東京"</code>）。範囲の行数と一致させる</td></tr><tr><td>条件2, &#8230;</td><td>任意</td><td>追加の条件。複数指定するとすべてAND条件で適用される</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは <strong>条件式が「TRUE / FALSEの配列」を返す</strong> という点です。たとえば <code>B2:B6="東京"</code> と書くと、B2〜B6の各セルが「東京」かどうかを判定し、<code>{TRUE; FALSE; TRUE; FALSE; FALSE}</code> のような配列が作られます。FILTER関数はこの配列を受け取り、TRUEの行だけを抜き出す仕組みです。</p>



<p class="wp-block-paragraph">TIP: 条件式の範囲の行数は、必ず第1引数の範囲と揃えてください。<code>A2:D6</code>（5行）に対して条件を <code>B2:B100</code>（99行）にすると <code>#VALUE!</code> エラーになります。後述の「よくあるエラーと対処法」で詳しく説明します。</p>



<h3 class="wp-block-heading"><span id="toc7">FILTER関数の動作イメージ早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>数式の例</th><th>やりたいこと</th><th>戻り値</th></tr></thead><tbody><tr><td><code>=FILTER(A2:D6, B2:B6="東京")</code></td><td>B列が「東京」の行を全列抽出</td><td>東京の全行</td></tr><tr><td><code>=FILTER(A2:A6, B2:B6="東京")</code></td><td>B列が「東京」の行のうちA列だけ抽出</td><td>東京の日付列のみ</td></tr><tr><td><code>=FILTER(A2:D6, B2:B6="東京", D2:D6>=10000)</code></td><td>東京かつ金額1万以上をAND抽出</td><td>該当行のみ</td></tr><tr><td><code>=FILTER(A2:D6, (B2:B6="東京")+(B2:B6="大阪"))</code></td><td>東京または大阪をOR抽出</td><td>該当行のみ</td></tr><tr><td><code>=IFERROR(FILTER(A2:D6, B2:B6="福岡"), "該当なし")</code></td><td>該当なしのときメッセージ表示</td><td>&#8220;該当なし&#8221;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これだけ覚えれば実務の8割はカバーできます。あとは応用例で組み合わせのバリエーションを増やしていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc8">FILTER関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">ここからは、次のような売上データを使って実例で説明します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<p class="wp-block-paragraph"><strong>やりたいこと</strong>: B列が「東京」の行だけを抽出する。</p>



<p class="wp-block-paragraph">空いているセル（たとえばF2）に次の数式を入力します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=&quot;東京&quot;)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/02_formula_filter-basic.png" alt="02 formula filter basic" /></figure>



<p class="wp-block-paragraph">結果はこうなります。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/03_result_filter-basic.png" alt="03 result filter basic" /></figure>



<p class="wp-block-paragraph">B列が「東京」の行だけが自動で出力されました。元のデータはまったく変わりません。条件に合う行が <strong>まるごとコピーされる</strong> のがFILTER関数の特徴です。VLOOKUPが「1つの値を返す」のと対照的に、FILTERは「行全体」を返します。</p>



<p class="wp-block-paragraph">TIP: FILTER関数の結果は複数行に <strong>自動で展開（スピル）</strong> されます。出力先のセルに他のデータがあると <code>#REF!</code> エラーになるので、下方向・右方向に十分な空きスペースを確保しておいてください。誰かが下のセルに値を入力すると関数全体がエラーになるので、共有ファイルでは出力先に色を付けておくと事故防止になります。</p>



<h2 class="wp-block-heading"><span id="toc9">FILTER関数で複数条件を指定する（AND・OR）</span></h2>



<p class="wp-block-paragraph">FILTER関数では、複数の条件を組み合わせて絞り込めます。書き方はAND条件とOR条件で異なるので、ここで一気に押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc10">AND条件（すべて満たす）</span></h3>



<p class="wp-block-paragraph">AND条件は、条件を引数として <strong>カンマで区切る</strong> か、<code>*</code>（掛け算）演算子で結合します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=&quot;東京&quot;, D2:D6&gt;=10000)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/04_result_filter-and.png" alt="04 result filter and" /></figure>



<p class="wp-block-paragraph">この数式は「支店が東京」<strong>かつ</strong>「金額が10,000円以上」の行を返します。</p>



<p class="wp-block-paragraph"><code>*</code> 演算子を使う書き方もあります。結果はまったく同じです。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, (B2:B6=&quot;東京&quot;)*(D2:D6&gt;=10000))</code></pre>



<p class="wp-block-paragraph">カンマ区切りのほうが読みやすいので普段はそちらで十分ですが、後述のOR条件と混在させたいときには <code>*</code> の書き方が必要になります。</p>



<h3 class="wp-block-heading"><span id="toc11">OR条件（いずれかを満たす）</span></h3>



<p class="wp-block-paragraph">OR条件は <code>+</code>（足し算）演算子で条件をつなぎます。カンマ区切りはOR条件としては使えないので注意してください。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, (B2:B6=&quot;東京&quot;)+(B2:B6=&quot;大阪&quot;))</code></pre>



<p class="wp-block-paragraph">この数式は「支店が東京」<strong>または</strong>「支店が大阪」の行を返します。</p>



<p class="wp-block-paragraph">NOTE: <code>*</code> と <code>+</code> が使える理由は、条件式が TRUE=1 / FALSE=0 の数値配列として扱われるためです。掛け算は「両方1のときだけ1」=AND、足し算は「どちらかが1以上なら1以上」=OR の動きになります。OR条件で同じ行が両方に該当することは原理的にないので、足し算の結果が2以上になる心配はありません。</p>



<h3 class="wp-block-heading"><span id="toc12">AND/OR を組み合わせる</span></h3>



<p class="wp-block-paragraph">ANDとORを混在させたい場合は、OR条件のかたまりを <code>()</code> で囲んでから <code>*</code> で他の条件と結合します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, ((B2:B6=&quot;東京&quot;)+(B2:B6=&quot;大阪&quot;))*(D2:D6&gt;=10000))</code></pre>



<p class="wp-block-paragraph">「東京または大阪」<strong>かつ</strong>「金額10,000円以上」の行が返ります。括弧の付け方を間違えると意図しない結果になりやすいので、複雑な条件は <strong>OR部分を先に書く</strong> と整理しやすいです。</p>



<p class="wp-block-paragraph">TIP: 条件が3つ以上になる場合は、いったん別のセルに <code>=B2:B6="東京"</code> のような中間配列を出してみると、TRUE/FALSEの並びを目で確認できてデバッグがラクになります。中間配列がそろったところでFILTER関数に組み込み直すのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc13">FILTER関数の実務テンプレ7パターン</span></h2>



<p class="wp-block-paragraph">ここからは、実務でよく出てくる7パターンを順に紹介します。コピペして使えるサンプル数式付きなので、自分のシートに合わせて範囲だけ書き換えてください。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン1: プルダウン連動の動的レポート</span></h3>



<p class="wp-block-paragraph">プルダウンと組み合わせると、選択した条件のデータだけを動的に抽出できます。月次レポートやダッシュボードでよく使う構成です。</p>



<p class="wp-block-paragraph">たとえば、F1セルにプルダウンで支店名を選べるようにしておき、F3セルに次の数式を入力します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=F1)</code></pre>



<p class="wp-block-paragraph">F1で「大阪」を選べば大阪のデータだけが、「名古屋」を選べば名古屋のデータだけが表示されます。条件セルを切り替えるだけで結果が自動で変わるので、毎月の支店別チェックがワンクリックで終わります。</p>



<p class="wp-block-paragraph">プルダウン自体の作り方は <a href="https://mashukabu.com/spreadsheet-pulldown/">スプレッドシートのプルダウン作り方｜色付け・連動まで解説</a> を参考にしてください。「全件表示」もしたい場合は、後述のパターン7「条件セルが空のとき全件表示」を組み合わせると便利です。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン2: 期間で絞り込む（今月・先月・直近30日）</span></h3>



<p class="wp-block-paragraph">日付列がある場合、特定の期間だけを抽出できます。月次レポートの定番パターンです。</p>



<p class="wp-block-paragraph">たとえば「2026年3月のデータだけ」を取り出したい場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:E100, E2:E100&gt;=DATE(2026,3,1), E2:E100&lt;=DATE(2026,3,31))</code></pre>



<p class="wp-block-paragraph">DATE関数で開始日と終了日を指定し、2つの条件をカンマで区切ります。AND条件で「3月1日以降 かつ 3月31日以前」になるので、3月中のデータだけが抽出されます。</p>



<p class="wp-block-paragraph">「今月」や「直近30日」を自動で取りたい場合は TODAY関数を組み合わせます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:E100, E2:E100&gt;=EOMONTH(TODAY(),-1)+1, E2:E100&lt;=EOMONTH(TODAY(),0))</code></pre>



<p class="wp-block-paragraph"><code>EOMONTH(TODAY(),-1)+1</code> は「今月の1日」、<code>EOMONTH(TODAY(),0)</code> は「今月末」を意味します。これでシートを開くたびに今月分が自動で表示されるレポートが完成します。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン3: FILTER + SORT で抽出結果を並べ替え</span></h3>



<p class="wp-block-paragraph">FILTERで抽出した結果を金額順や日付順に並べ替えたいときは、<a href="https://mashukabu.com/spreadsheet-sort-sortn-sortby/">SORT関数</a> で囲みます。</p>



<pre class="wp-block-code"><code>=SORT(FILTER(A2:D6, B2:B6=&quot;東京&quot;), 4, FALSE)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/05_result_filter-sort.png" alt="05 result filter sort" /></figure>



<p class="wp-block-paragraph">SORT関数の第2引数 <code>4</code> は「4列目（金額）で並べ替え」、第3引数 <code>FALSE</code> は「降順」を意味します。これで東京支店のデータを金額が大きい順に表示できます。</p>



<p class="wp-block-paragraph">TIP: SORT関数の列番号は <strong>FILTER結果の中での列番号</strong> です。元データのシート上の列番号ではないので、列を絞って抽出している場合はFILTER結果側で数え直してください。<code>=SORT(FILTER(A2:A6, B2:B6="東京"), 1, TRUE)</code> のように、抽出が1列だけなら列番号は必ず1になります。</p>



<h3 class="wp-block-heading"><span id="toc17">パターン4: 特定の列だけを取り出す（配列リテラル / CHOOSECOLS）</span></h3>



<p class="wp-block-paragraph">FILTER結果から一部の列だけ取り出したい場合は、配列リテラル <code>{}</code> で列を指定します。</p>



<pre class="wp-block-code"><code>={FILTER(A2:A6, B2:B6=&quot;東京&quot;), FILTER(D2:D6, B2:B6=&quot;東京&quot;)}</code></pre>



<p class="wp-block-paragraph">A列（日付）とD列（金額）だけが抽出されます。レポートに見せたい項目を絞れるので、社外共有用の表を作るときに便利です。</p>



<p class="wp-block-paragraph">5列以上の元データから3〜4列だけ抜き出したい場合は、CHOOSECOLS関数と組み合わせる書き方もあります。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(FILTER(A2:E100, B2:B100=&quot;東京&quot;), 1, 2, 5)</code></pre>



<p class="wp-block-paragraph">これでFILTER結果の1・2・5列目だけが残ります。配列リテラルの書き方より見通しがよく、列番号を変えるだけで取り出す列を調整できるのが利点です。</p>



<h3 class="wp-block-heading"><span id="toc18">パターン5: FILTER + UNIQUE で重複を除く</span></h3>



<p class="wp-block-paragraph">FILTERで抽出した結果に重複がある場合、UNIQUE関数で囲むとユニーク値だけを残せます。</p>



<pre class="wp-block-code"><code>=UNIQUE(FILTER(B2:C100, D2:D100&gt;=10000))</code></pre>



<p class="wp-block-paragraph">たとえば「金額1万円以上の案件に登場した支店・担当者の組み合わせ」だけを一覧化したいときに使えます。生データから関係者リストを作るような場面で重宝します。</p>



<p class="wp-block-paragraph">担当者だけのユニーク一覧が欲しい場合は、列を1つに絞ってからUNIQUEにかけます。</p>



<pre class="wp-block-code"><code>=UNIQUE(FILTER(C2:C100, D2:D100&gt;=10000))</code></pre>



<h3 class="wp-block-heading"><span id="toc19">パターン6: FILTER + COUNTA / SUM で集計</span></h3>



<p class="wp-block-paragraph">FILTER単体では合計や件数を出せませんが、COUNTAやSUM系の関数で囲めば簡単に集計できます。</p>



<pre class="wp-block-code"><code>=COUNTA(FILTER(A2:A6, B2:B6=&quot;東京&quot;))</code></pre>



<p class="wp-block-paragraph">これで「東京支店のデータ件数」が出ます。同じ要領で合計も書けます。</p>



<pre class="wp-block-code"><code>=SUM(FILTER(D2:D6, B2:B6=&quot;東京&quot;))</code></pre>



<p class="wp-block-paragraph">「東京支店の金額合計」が一発で出ます。SUMIFやCOUNTIFと違って、条件式を <code>*</code> / <code>+</code> で自由に組み合わせられるのがFILTERを噛ませる利点です。ただし純粋に1条件の合計だけならSUMIFのほうがシンプルなので、用途に応じて使い分けてください。</p>



<h3 class="wp-block-heading"><span id="toc20">パターン7: 条件セルが空のとき全件表示</span></h3>



<p class="wp-block-paragraph">プルダウン連動レポートで「条件を選んでいないときは全件表示したい」というニーズはよくあります。IF関数と組み合わせて条件を切り替えると実現できます。</p>



<pre class="wp-block-code"><code>=IF(F1=&quot;&quot;, A2:D6, FILTER(A2:D6, B2:B6=F1))</code></pre>



<p class="wp-block-paragraph">F1が空のときはA2:D6をそのまま表示し、F1に値があるときだけFILTERで絞り込みます。プルダウンの選択肢に「（すべて）」を入れておき、その項目を選んだら全件表示する設計にすると、利用者の操作感がぐっと良くなりますよ。</p>



<h2 class="wp-block-heading"><span id="toc21">よくあるエラーと対処法</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>エラー / 症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#N/A</code></td><td>条件に一致するデータがない</td><td><code>=IFERROR(FILTER(...), "該当データなし")</code> で空結果時のメッセージを設定</td></tr><tr><td><code>#REF!</code></td><td>出力先のセルに既にデータがある（スピル先がふさがっている）</td><td>出力先の下方向・右方向を空けるか、出力位置を変更する</td></tr><tr><td><code>#VALUE!</code></td><td>条件式の範囲サイズが元データと合っていない</td><td>範囲の行数を揃える（例: <code>A2:D100</code> と <code>B2:B100</code>）</td></tr><tr><td><code>#NAME?</code></td><td>関数名のタイポ（<code>FILTR</code> 等）</td><td>スペルを確認する</td></tr><tr><td><code>#ERROR!</code></td><td>引数の区切り（カンマ）の前後に不要な文字が混入</td><td>全角カンマや余分なスペースを削除</td></tr><tr><td>結果が0行になる</td><td>条件の文字列に全角/半角・スペースの違いがある</td><td>TRIM関数（前後空白除去）やASC関数（半角化）でデータを統一する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に注意したいのが <code>#N/A</code> エラーです。ExcelのFILTER関数には第3引数（該当なしの場合に返す値）がありますが、<strong>スプレッドシートのFILTER関数にはこの引数がありません</strong>。IFERRORで囲むのが定番の対処法です。</p>



<pre class="wp-block-code"><code>=IFERROR(FILTER(A2:D6, B2:B6=&quot;福岡&quot;), &quot;該当データなし&quot;)</code></pre>



<p class="wp-block-paragraph">TIP: <code>#VALUE!</code> エラーは範囲サイズの不一致が原因です。<code>A2:D6</code>（5行）に対して条件を <code>B2:B100</code>（99行）のように行数が違う範囲にすると発生します。データ件数が増減する可能性がある場合は、両方とも <code>A2:D</code> のように <strong>列まるごと指定</strong> にしておくと不一致が起きにくくなります。</p>



<h3 class="wp-block-heading"><span id="toc22">データがあるのに0行になるケース（デバッグ手順）</span></h3>



<p class="wp-block-paragraph">条件は正しそうなのに結果が表示されないときは、データの表記揺れが原因のことがほとんどです。代表的な揺れと対処は次の3つです。</p>



<ul class="wp-block-list"><li><strong>全角と半角</strong>: 「東京」と「東京」（全角半角混在）は別文字として扱われる</li><li><strong>前後のスペース</strong>: 「東京 」（末尾に空白）と「東京」は別扱い</li><li><strong>大文字小文字</strong>: アルファベットは区別される（例: &#8220;ABC&#8221; と &#8220;abc&#8221;）</li></ul>



<p class="wp-block-paragraph">対処手順は次のとおりです。</p>



<ol class="wp-block-list"><li>別のセルに <code>=B2=F1</code> のように <strong>単純な等号比較</strong> を書いて、TRUE / FALSEを目視確認する</li><li>FALSEが返るセルがあれば、その値を <code>=LEN(B2)</code> と <code>=LEN(F1)</code> で文字数比較する</li><li>文字数が違えばスペース混入、同じなら全角半角混在を疑う</li><li>元データを <code>=TRIM(ASC(B2))</code> で整形した補助列を作り、その補助列を条件範囲に指定する</li></ol>



<p class="wp-block-paragraph">この4ステップで、ほぼすべての「0行になる問題」は解決できます。共有ファイルでは入力規則やプルダウンを使って <strong>そもそも揺れさせない</strong> 設計にしておくと、後々のトラブルが激減します。</p>



<h2 class="wp-block-heading"><span id="toc23">FILTERとQUERY・ARRAYFORMULAの違い・使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには、FILTER以外にもデータを操作する強力な関数があります。それぞれ得意分野が異なるので、用途に応じて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FILTER関数</th><th>QUERY関数</th><th>ARRAYFORMULA</th></tr></thead><tbody><tr><td>主な用途</td><td>条件に一致する行の抽出</td><td>抽出+集計+並べ替えを一括</td><td>既存の関数を全行に一括適用</td></tr><tr><td>構文の難易度</td><td>やさしい</td><td>やや難（SQL風の構文）</td><td>関数による</td></tr><tr><td>複数条件</td><td><code>*</code> / <code>+</code> 演算子で対応</td><td>WHERE句に条件を列挙</td><td>関数内でIF等を組み合わせ</td></tr><tr><td>集計（合計・平均）</td><td>単体では不可。SUMと組み合わせる</td><td>SELECT句でSUM/AVGが使える</td><td>SUM等を配列で適用</td></tr><tr><td>グループ化（部署別合計など）</td><td>不可</td><td>GROUP BY で対応</td><td>不可（ピボットテーブル推奨）</td></tr><tr><td>並べ替え</td><td>SORT関数で囲む</td><td>ORDER BY で対応</td><td>SORT関数で囲む</td></tr><tr><td>結果の見出し列</td><td>付かない</td><td>LABEL句で付けられる</td><td>付かない</td></tr><tr><td>向いている場面</td><td>シンプルな条件抽出</td><td>複雑な集計レポート</td><td>列ごとの計算を一括処理</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>ざっくりまとめると</strong>:</p>



<ul class="wp-block-list"><li><strong>「条件に合う行を取り出すだけ」</strong> → FILTER関数がシンプルで最適</li><li><strong>「集計やグループ化もしたい」</strong> → QUERY関数が強力</li><li><strong>「全行に同じ計算をかけたい」</strong> → ARRAYFORMULAの出番</li></ul>



<h3 class="wp-block-heading"><span id="toc24">FILTER と QUERY の選び分けフロー</span></h3>



<p class="wp-block-paragraph">どちらを使うか迷ったら、次の順番で判断するとブレません。</p>



<ol class="wp-block-list"><li><strong>集計が必要か？</strong> → 必要なら QUERY（SELECT句でSUM/AVG/COUNTが書ける）</li><li><strong>グループ化が必要か？</strong> → 必要なら QUERY（GROUP BYで部署別集計などが可能）</li><li><strong>見出し列も自動で付けたい？</strong> → 必要なら QUERY（LABEL句で列名を整えられる）</li><li><strong>並べ替えも一緒にしたい？</strong> → どちらでも対応可能。シンプルさ重視ならFILTER+SORT</li><li><strong>上記すべてNOで、条件で行を絞り込むだけ？</strong> → FILTER が一番読みやすく保守もしやすい</li></ol>



<p class="wp-block-paragraph">迷ったらまずFILTER関数を試してみてください。シンプルな条件抽出ならFILTERが圧倒的にわかりやすく、後から条件を増減するメンテナンスもラクです。</p>



<h3 class="wp-block-heading"><span id="toc25">FILTER と XLOOKUP・XMATCH の違い</span></h3>



<p class="wp-block-paragraph">検索系の新関数との違いも気になるかもしれません。</p>



<ul class="wp-block-list"><li><strong>XLOOKUP</strong>: 1つの値を検索して <strong>対応する1行（または1列）だけ</strong> を返す</li><li><strong>XMATCH</strong>: 1つの値が <strong>何行目（何番目）にあるか</strong> を返す</li><li><strong>FILTER</strong>: 条件に一致する <strong>すべての行</strong> を返す</li></ul>



<p class="wp-block-paragraph">「商品コードから商品名を引きたい」ような1対1の検索はXLOOKUPの出番です。「東京支店の全データを出したい」ような複数行抽出はFILTERの得意分野です。検索値の位置だけ知りたいならXMATCHを使います。</p>



<p class="wp-block-paragraph">XLOOKUP・XMATCHの詳しい使い方は <a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方</a> と <a href="https://mashukabu.com/spreadsheet-xmatch-function/">スプレッドシートのXMATCH関数の使い方</a> もあわせてご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc26">Excel版FILTERとの違い</span></h3>



<p class="wp-block-paragraph">Excel（Microsoft 365 / Excel 2021以降）にもFILTER関数がありますが、引数仕様が少し異なります。スプレッドシートとファイル連携する場合は要注意です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>スプレッドシート版</th><th>Excel版</th></tr></thead><tbody><tr><td>引数の数</td><td>2〜（範囲 + 条件×複数）</td><td>3（範囲 + 条件 + 該当なし時の値）</td></tr><tr><td>該当なしの返し方</td><td>IFERROR で囲む</td><td>第3引数で指定可能</td></tr><tr><td>複数条件のAND</td><td>カンマ区切り または <code>*</code></td><td><code>*</code> のみ</td></tr><tr><td>複数条件のOR</td><td><code>+</code></td><td><code>+</code></td></tr><tr><td>列方向の抽出</td><td>可能（条件式の方向で決まる）</td><td>可能（条件式の方向で決まる）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">スプレッドシートで作ったブックをExcelで開くと、複数条件をカンマ区切りで書いた数式は <strong>動作しません</strong>。Excelと共有する可能性がある場合は、最初から <code>*</code> で書いておくと安全です。</p>



<h2 class="wp-block-heading"><span id="toc27">まとめ</span></h2>



<p class="wp-block-paragraph">この記事では、GoogleスプレッドシートのFILTER関数の使い方を解説しました。</p>



<ul class="wp-block-list"><li><strong>基本</strong>: <code>=FILTER(範囲, 条件)</code> で条件に一致する行を自動抽出</li><li><strong>AND条件</strong>: カンマ区切りまたは <code>*</code> 演算子</li><li><strong>OR条件</strong>: <code>+</code> 演算子で条件をつなぐ</li><li><strong>実務テンプレ</strong>: プルダウン連動 / 期間絞り込み / SORT連携 / 列抽出 / UNIQUE / 集計 / 全件切替</li><li><strong>空結果対策</strong>: <code>=IFERROR(FILTER(...), "メッセージ")</code> で <code>#N/A</code> を回避</li><li><strong>デバッグ</strong>: 0行になるときは等号比較 → LEN比較 → TRIM/ASC整形の4ステップ</li><li><strong>使い分け</strong>: シンプルな抽出はFILTER、集計込みならQUERY、全行計算ならARRAYFORMULA</li></ul>



<p class="wp-block-paragraph">FILTER関数は一度覚えてしまえば本当に使い勝手のいい関数です。まずは自分の手元のデータに <code>=FILTER(A2:D, B2:B="東京")</code> のような数式を当ててみてください。元データを壊さずに「欲しい行だけ」を取り出せる安心感を、ぜひ体感してもらえたら嬉しいです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc28">この記事を書いた人</span></h3>



<p class="wp-block-paragraph">biz-tactics編集部。事務職の現場で本当に使えるExcel・スプレッドシート・AIの技を発信しています。</p>



<h3 class="wp-block-heading"><span id="toc29">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-sort-sortn-sortby/">スプレッドシートのSORT・SORTN・SORTBY関数の使い方｜データを自動で並べ替える</a></li><li><a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方｜VLOOKUPとの違いも解説</a></li><li><a href="https://mashukabu.com/spreadsheet-xmatch-function/">スプレッドシートのXMATCH関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-switch-function/">スプレッドシートのSWITCH関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-pulldown/">スプレッドシートのプルダウン作り方｜色付け・連動まで解説</a></li><li><a href="https://mashukabu.com/spreadsheet-query-function/">スプレッドシートのQUERY関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-arrayformula-function/">スプレッドシートのARRAYFORMULAの使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-gemini-ai-function/">スプレッドシートでGemini（AI関数）を使う方法</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-filter-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FILTER関数の使い方｜複数条件・エラー対処・旧Excel代替まで</title>
		<link>https://mashukabu.com/excel-function-howto-use-filter/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-filter/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 08 Mar 2025 14:40:06 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[FILTER関数]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[データ抽出]]></category>
		<category><![CDATA[動的配列関数]]></category>
		<category><![CDATA[複数条件]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3246</guid>

					<description><![CDATA[ExcelのFILTER関数の使い方を基本から解説します。AND/OR/NOTの複数条件指定・別シートへの抽出・#CALC!/#SPILL!エラーの原因別対処・Excel 2019以前で使える代替数式・オートフィルターとの使い分け表まで実務目線で網羅しました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelのFILTER関数を使えば、表の中から条件に合う行だけを別の場所へ自動で取り出せます。シートの「フィルター機能」と違い、元のデータには一切触れません。</p>



<p class="wp-block-paragraph">とはいえ実務で使い始めると、「複数条件の指定がうまくいかない」「#CALC!や#SPILL!が出る」「自分のExcelでは使えない」といった壁にぶつかりがちです。</p>



<p class="wp-block-paragraph">この記事では、FILTER関数の基本構文から、AND/OR/NOTの複数条件、エラー別の診断、Excel 2019以前の代替数式までを一気通貫で解説します。すべての数式は下の共通サンプルで結果を確認しているので、手元で再現しながら読み進めてください。</p>



<p class="wp-block-paragraph">この記事はこんな人におすすめです。</p>



<ul class="wp-block-list"><li>「FILTER関数 複数条件」の正しい書き方を知りたい</li><li>#CALC!や#SPILL!エラーの原因を切り分けたい</li><li>自分のExcelで使えないとき、何で代替すればいいか知りたい</li></ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">FILTER関数とは？できることと対応バージョン</a><ol><li><a href="#toc2" tabindex="0">基本構文と3つの引数</a></li><li><a href="#toc3" tabindex="0">オートフィルターとの使い分け早見表</a></li></ol></li><li><a href="#toc4" tabindex="0">単一条件・複数条件と別シートの指定方法</a><ol><li><a href="#toc5" tabindex="0">単一条件で抽出する</a></li><li><a href="#toc6" tabindex="0">AND条件（*）で複数条件を同時指定</a></li><li><a href="#toc7" tabindex="0">OR条件（+）でいずれか一致を指定</a></li><li><a href="#toc8" tabindex="0">NOT条件（）で除外フィルターをかける</a></li><li><a href="#toc9" tabindex="0">別シート・別ファイルから抽出する</a></li></ol></li><li><a href="#toc10" tabindex="0">エラーの原因と対処法</a><ol><li><a href="#toc11" tabindex="0">#CALC!エラー｜第3引数で空時の表示を指定する</a></li><li><a href="#toc12" tabindex="0">#SPILL!エラー｜3パターン別チェックリスト</a></li><li><a href="#toc13" tabindex="0">条件範囲のサイズ不一致エラー</a></li></ol></li><li><a href="#toc14" tabindex="0">旧Excel（2019以前）ユーザー向け代替数式</a><ol><li><a href="#toc15" tabindex="0">INDEX＋IF配列数式（Ctrl+Shift+Enter）で再現する</a></li><li><a href="#toc16" tabindex="0">COUNTIF＋VLOOKUP組み合わせパターン</a></li></ol></li><li><a href="#toc17" tabindex="0">実務フロー別レシピと他関数との組み合わせ</a><ol><li><a href="#toc18" tabindex="0">抽出結果をSORTで並べ替える</a></li><li><a href="#toc19" tabindex="0">UNIQUEと組み合わせて重複なしリストを作る</a></li><li><a href="#toc20" tabindex="0">HSTACKで離れた列を結合してから抽出する</a></li><li><a href="#toc21" tabindex="0">部署別の在席リストを自動生成する</a></li><li><a href="#toc22" tabindex="0">Googleスプレッドシートでも使えるか</a></li></ol></li><li><a href="#toc23" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">FILTER関数とは？できることと対応バージョン</span></h2>



<p class="wp-block-paragraph">ExcelのFILTER関数は、指定した条件に一致する行だけを抽出する関数です。読み方は「フィルター関数」。検索や並べ替えと違い、元の表をそのまま残したまま、別のセルに結果を吐き出せるのが最大の特徴です。</p>



<p class="wp-block-paragraph">この記事全体で使う共通サンプルデータを先に示します。A1からD6に、次の小さな売上表が入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>行</th><th>A（No）</th><th>B（部署）</th><th>C（氏名）</th><th>D（売上）</th></tr></thead><tbody><tr><td>1</td><td>No</td><td>部署</td><td>氏名</td><td>売上</td></tr><tr><td>2</td><td>1</td><td>営業</td><td>田中</td><td>120</td></tr><tr><td>3</td><td>2</td><td>総務</td><td>鈴木</td><td>0</td></tr><tr><td>4</td><td>3</td><td>営業</td><td>佐藤</td><td>85</td></tr><tr><td>5</td><td>4</td><td>経理</td><td>伊藤</td><td>200</td></tr><tr><td>6</td><td>5</td><td>営業</td><td>山田</td><td>150</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">1行目が見出しなので、抽出対象のデータ範囲は「A2:D6」です。以降の数式はすべて、この表を前提に結果を示します。</p>



<h3 class="wp-block-heading"><span id="toc2">基本構文と3つの引数</span></h3>



<p class="wp-block-paragraph">FILTER関数の構文は、3つの引数で構成されます。</p>



<pre class="wp-block-code"><code>=FILTER(配列, 含む, [空の場合])</code></pre>



<p class="wp-block-paragraph">各引数の役割は次のとおりです。</p>



<ul class="wp-block-list"><li><strong>第1引数 配列（必須）</strong>: 抽出の対象となるデータ範囲。今回は <code>A2:D6</code></li><li><strong>第2引数 含む（必須）</strong>: 抽出条件。データと同じ行数の論理値（TRUE/FALSE）の並び</li><li><strong>第3引数 空の場合（省略可）</strong>: 条件に合う行が0件のときに返す値</li></ul>



<p class="wp-block-paragraph">第2引数は「範囲=値」の形で書きます。たとえば <code>B2:B6="営業"</code> は、各行が営業かどうかを判定し、TRUE/FALSEの並びを作ります。FILTERはこのTRUEの行だけを残す仕組みです。</p>



<p class="wp-block-paragraph">抽出結果は1つのセルに入力するだけで、自動的に複数行・複数列へあふれて表示されます。この挙動を「スピル」（数式の結果が隣接セルへ自動展開される機能）と呼びます。あふれ先のセルは空けておく必要があります。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=&quot;営業&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">この数式の結果は、営業の3行（田中120／佐藤85／山田150）が上から順に展開されます。FILTER関数はMicrosoft 365、Excel for the web、Excel 2021、Excel 2024で使えます。Excel 2019以前は動的配列関数に未対応のため、後半で紹介する代替数式が必要です。</p>



<h3 class="wp-block-heading"><span id="toc3">オートフィルターとの使い分け早見表</span></h3>



<p class="wp-block-paragraph">「シートのオートフィルターで十分では？」と思うかもしれません。どちらを使うべきかは、やりたいことで決まります。判断軸ごとに整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th style="text-align:center">オートフィルター</th><th style="text-align:center">FILTER関数</th></tr></thead><tbody><tr><td>元データを変えずに抽出したい</td><td style="text-align:center">△（行を隠すだけ）</td><td style="text-align:center">○</td></tr><tr><td>結果を別シート・別の場所に出したい</td><td style="text-align:center">×（同じ表上のみ）</td><td style="text-align:center">○</td></tr><tr><td>毎回手動で操作したくない</td><td style="text-align:center">×（都度クリック）</td><td style="text-align:center">○（自動更新）</td></tr><tr><td>条件をセルやドロップダウンで切り替えたい</td><td style="text-align:center">×</td><td style="text-align:center">○</td></tr><tr><td>印刷レイアウトを崩したくない</td><td style="text-align:center">△</td><td style="text-align:center">○</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ざっくり言えば、「一度きりの目視確認」ならオートフィルター、「結果を別の場所に置いて自動更新したい」ならFILTER関数です。レポートやダッシュボードを組むならFILTER関数が圧倒的に向いています。</p>



<h2 class="wp-block-heading"><span id="toc4">単一条件・複数条件と別シートの指定方法</span></h2>



<p class="wp-block-paragraph">ここがFILTER関数で最もつまずきやすいポイントです。「FILTER関数 複数条件」で検索する人の多くは、AND条件やOR条件の演算子の書き方で詰まっています。順番に見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc5">単一条件で抽出する</span></h3>



<p class="wp-block-paragraph">まずは1つの条件で抽出します。サンプル表から「営業」の行だけを取り出してみます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=&quot;営業&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">第2引数の <code>B2:B6="営業"</code> が、各行について営業かどうかを判定します。結果は田中（120）、佐藤（85）、山田（150）の3行です。第3引数の「該当なし」は、もし0件だったときに表示する文字列です。</p>



<p class="wp-block-paragraph">数値の比較も同じように書けます。「売上が100以上」なら次のとおりです。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, D2:D6&gt;=100, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">この結果は田中（120）、伊藤（200）、山田（150）の3行になります。</p>



<h3 class="wp-block-heading"><span id="toc6">AND条件（*）で複数条件を同時指定</span></h3>



<p class="wp-block-paragraph">複数の条件を「すべて満たす行」だけ抽出したいときは、条件同士を <code>*</code>（アスタリスク）でつなぎます。これがAND条件（論理積。すべての条件が同時に成り立つこと）の書き方です。</p>



<p class="wp-block-paragraph">「営業」かつ「売上が100以上」の行を抽出してみます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, (B2:B6=&quot;営業&quot;)*(D2:D6&gt;=100), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">各条件は必ずカッコで囲んでください。結果は田中（120）と山田（150）の2行です。佐藤（85）は営業ですが売上が100未満なので除外されます。</p>



<p class="wp-block-paragraph">なぜ掛け算でANDになるのか、仕組みは単純です。TRUEは1、FALSEは0として扱われ、<code>1×1=1</code>（TRUE）、<code>1×0=0</code>（FALSE）となります。両方TRUEのときだけ1が残るので、AND条件になるわけです。</p>



<h3 class="wp-block-heading"><span id="toc7">OR条件（+）でいずれか一致を指定</span></h3>



<p class="wp-block-paragraph">「どちらか一方でも満たせばよい」場合は、条件同士を <code>+</code>（プラス）でつなぎます。これがOR条件（論理和。いずれかの条件が成り立つこと）です。</p>



<p class="wp-block-paragraph">「総務」または「経理」の行を抽出します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, (B2:B6=&quot;総務&quot;)+(B2:B6=&quot;経理&quot;), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">結果は鈴木（0）と伊藤（200）の2行です。足し算でORになる理由も同じで、<code>0+1=1</code>、<code>1+0=1</code>、<code>0+0=0</code> となり、どちらかがTRUEなら1が残ります。</p>



<p class="wp-block-paragraph">なお、同じ列で3つ以上の値を許可したいなら、条件を <code>+</code> で並べ続ければ対応できます。たとえば <code>(B2:B6="営業")+(B2:B6="総務")+(B2:B6="経理")</code> のように書けます。</p>



<h3 class="wp-block-heading"><span id="toc8">NOT条件（）で除外フィルターをかける</span></h3>



<p class="wp-block-paragraph">「特定の値を除いたすべて」を抽出したいときは、不等号 <code><></code>（〜ではない）を使います。除外フィルターです。</p>



<p class="wp-block-paragraph">「営業以外」の行を抽出してみます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6&lt;&gt;&quot;営業&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">結果は鈴木（0）と伊藤（200）の2行です。AND・ORと組み合わせることもできます。たとえば「営業以外で、かつ売上が100以上」なら次のように書きます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, (B2:B6&lt;&gt;&quot;営業&quot;)*(D2:D6&gt;=100), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">この結果は伊藤（200）の1行だけです。鈴木（0）は営業以外ですが、売上が100未満なので除外されます。「○○を含む文字列を除外したい」といった部分一致の除外は、<code>NOT(ISNUMBER(SEARCH("除外語", 範囲)))</code> を条件に使うと実現できます。</p>



<h3 class="wp-block-heading"><span id="toc9">別シート・別ファイルから抽出する</span></h3>



<p class="wp-block-paragraph">FILTER関数は、別シートのデータを参照して抽出することもできます。範囲の前に「シート名!」を付けるだけです。元データが「Sheet1」のA2:D6にあるとします。</p>



<pre class="wp-block-code"><code>=FILTER(Sheet1!A2:D6, Sheet1!B2:B6=&quot;営業&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">ポイントは、第1引数と第2引数の<strong>両方</strong>に「Sheet1!」を付けることです。条件範囲だけ付け忘れると、サイズ不一致のエラーになります。抽出したい部署名をG1セルに入れ、<code>Sheet1!B2:B6=G1</code> とすれば、G1を書き換えるだけで結果が切り替わる動的レポートが作れます。</p>



<p class="wp-block-paragraph">別ブック（別ファイル）も参照できますが、注意が必要です。<strong>参照先のブックを開いていないと #REF! エラーになります</strong>。動的配列の結果は、ブックを閉じた状態では正しく取得できません。別ブック参照は管理が煩雑になりやすいので、元データは同じブックの別シートに集約するのがおすすめです。シート名をセルから動的に組み立てたい場合は<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>も使えます。ただし別ブック参照に弱く、再計算が重い点には注意してください。</p>



<h2 class="wp-block-heading"><span id="toc10">エラーの原因と対処法</span></h2>



<p class="wp-block-paragraph">FILTER関数で出るエラーは、原因を切り分ければ怖くありません。代表的な3種類を、症状から逆引きできるように整理します。エラー値全般の意味は<a href="https://mashukabu.com/excel-error-value-list/">Excelエラー値一覧</a>も参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc11">#CALC!エラー｜第3引数で空時の表示を指定する</span></h3>



<p class="wp-block-paragraph"><code>#CALC!</code> は、条件に合う行が1つもないのに、第3引数（空の場合）を省略したときに発生します。FILTERは「0件の結果」をそのまま返せないため、エラーになる仕組みです。</p>



<p class="wp-block-paragraph">たとえばサンプル表で存在しない「人事」を条件にすると、0件なので #CALC! が出ます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=&quot;人事&quot;)</code></pre>



<p class="wp-block-paragraph">対処は簡単で、第3引数に表示したい値を指定するだけです。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=&quot;人事&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">これで0件のとき「該当なし」と表示されます。何も表示したくなければ <code>""</code>（空文字）を指定します。FILTERをさらに他の関数で包んでいて、第3引数だけでは制御しきれない場合は、IFERRORで全体を囲む方法も有効です。</p>



<pre class="wp-block-code"><code>=IFERROR(FILTER(A2:D6, B2:B6=&quot;人事&quot;), &quot;該当なし&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc12">#SPILL!エラー｜3パターン別チェックリスト</span></h3>



<p class="wp-block-paragraph"><code>#SPILL!</code> は、抽出結果を展開（スピル）しようとしたスペースが確保できないときに出ます。競合記事は「スピル先にデータがある」で終わりがちですが、実際の原因は複数あります。よくある3パターンを症状別にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状・状況</th><th>原因</th><th>解決手順</th></tr></thead><tbody><tr><td>スピル予定範囲に文字や数式がある</td><td>あふれ先のセルが空でない</td><td>エラーセルを選ぶと破線枠で展開予定範囲が出る。その枠内の既存データを削除・移動する</td></tr><tr><td>結合セルが範囲に重なっている</td><td>結合セルにはスピルできない</td><td>該当範囲の「セルの結合」を解除する</td></tr><tr><td>テーブル（Ctrl+T）の中で使っている</td><td>テーブル内は動的配列を展開できない</td><td>数式をテーブルの外に移す。または「テーブルデザイン > 範囲に変換」でテーブルを解除する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">診断のコツは、エラーセルを選択することです。スピルしようとした範囲が破線枠で表示されるので、その枠の中に何が邪魔しているかを目で確認できます。エラーチェックの警告メニューから「障害のあるセルを選択」を使うと、干渉しているセルを直接特定できます。</p>



<p class="wp-block-paragraph">このほか、<code>A:A</code> のように列全体を参照すると、1,048,576行分を返そうとして #SPILL! になります。条件範囲は <code>A2:A100</code> のように必要な範囲に限定しましょう。</p>



<h3 class="wp-block-heading"><span id="toc13">条件範囲のサイズ不一致エラー</span></h3>



<p class="wp-block-paragraph">第1引数のデータ範囲と、第2引数の条件範囲で、行数がそろっていないとエラーになります。たとえばデータが <code>A2:D6</code>（5行）なのに、条件を <code>B2:B10</code>（9行）と書いてしまうケースです。</p>



<pre class="wp-block-code"><code>（誤）=FILTER(A2:D6, B2:B10=&quot;営業&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">解決策は、データ範囲と条件範囲の行数を完全に一致させることです。</p>



<pre class="wp-block-code"><code>（正）=FILTER(A2:D6, B2:B6=&quot;営業&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">複数条件を <code>*</code> や <code>+</code> でつなぐときも、すべての条件範囲の行数をそろえる必要があります。別シート参照のときは、条件範囲側のシート名付け忘れもこのエラーの原因になります。</p>



<h2 class="wp-block-heading"><span id="toc14">旧Excel（2019以前）ユーザー向け代替数式</span></h2>



<p class="wp-block-paragraph">「FILTER関数が使えない」という人の多くは、Excel 2019以前を使っています。動的配列関数が実装されていないため、FILTERそのものは入力できません。ただし、配列数式を使えば同じ結果を再現できます。</p>



<h3 class="wp-block-heading"><span id="toc15">INDEX＋IF配列数式（Ctrl+Shift+Enter）で再現する</span></h3>



<p class="wp-block-paragraph">旧Excelで条件抽出を再現する定番が、INDEX・SMALL・IFを組み合わせた配列数式（CSE数式）です。結果を表示したい先頭セルに、次の数式を入力します。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX($A$2:$A$6, SMALL(IF($B$2:$B$6=&quot;営業&quot;, ROW($B$2:$B$6)-ROW($B$2)+1), ROW(A1))), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">入力のあとに <strong>Enterではなく Ctrl + Shift + Enter</strong> で確定するのが鉄則です。これで数式が配列数式として扱われ、両端に <code>{ }</code> が付きます。あとは数式を下方向へコピーすれば、該当行が順番に表示されます。なお、Microsoft 365やExcel 2021以降なら、この数式はCtrl + Shift + Enterなしの通常確定でも動作します。</p>



<p class="wp-block-paragraph">仕組みは次のとおりです。<code>IF($B$2:$B$6="営業", ...)</code> で営業の行番号だけを抜き出し、<code>SMALL(..., ROW(A1))</code> で小さい順に1件ずつ取り出します。<code>ROW(A1)</code> はコピーするたびに2、3と増えるので、2件目・3件目と順に表示されます。</p>



<p class="wp-block-paragraph">氏名や売上など別の列も並べたいときは、INDEXの対象範囲を <code>$C$2:$C$6</code>（氏名）や <code>$D$2:$D$6</code>（売上）に変えた数式を、横の列にそれぞれ用意します。</p>



<h3 class="wp-block-heading"><span id="toc16">COUNTIF＋VLOOKUP組み合わせパターン</span></h3>



<p class="wp-block-paragraph">条件に一致する件数を数えるだけなら、配列数式を使わずCOUNTIFで足ります。</p>



<pre class="wp-block-code"><code>=COUNTIF($B$2:$B$6, &quot;営業&quot;)</code></pre>



<p class="wp-block-paragraph">この結果は「3」です。「営業の人数だけ知りたい」のように、抽出ではなく集計が目的なら、こちらの方がはるかに軽くて簡単です。抽出した結果から特定の値を引きたい場合は、上のINDEX配列数式で抽出列を作業列として置きます。そこに<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>やVLOOKUPを当てると、旧Excelでも実務に耐える表が組めます。</p>



<p class="wp-block-paragraph">可能であれば、Microsoft 365へのアップデートが根本的な解決策です。FILTER関数を含む動的配列関数は、日々のデータ処理を大幅に楽にしてくれます。</p>



<h2 class="wp-block-heading"><span id="toc17">実務フロー別レシピと他関数との組み合わせ</span></h2>



<p class="wp-block-paragraph">最後に、FILTER関数を他の動的配列関数と組み合わせる実務レシピを紹介します。「やりたいこと」起点で見てください。</p>



<h3 class="wp-block-heading"><span id="toc18">抽出結果をSORTで並べ替える</span></h3>



<p class="wp-block-paragraph">抽出したあと、特定の列で並べ替えたいケースは多いはずです。FILTERを<a href="https://mashukabu.com/excel-function-howto-use-sort/">SORT関数</a>で包めば、抽出と並べ替えを一気に行えます。</p>



<p class="wp-block-paragraph">「営業の行を抽出し、売上（4列目）の降順で並べる」なら次のとおりです。</p>



<pre class="wp-block-code"><code>=SORT(FILTER(A2:D6, B2:B6=&quot;営業&quot;, &quot;&quot;), 4, -1)</code></pre>



<p class="wp-block-paragraph">結果は山田（150）、田中（120）、佐藤（85）の順に並びます。SORTの第2引数「4」が並べ替えの基準列、第3引数「-1」が降順の指定です。昇順にしたいなら「1」にします。</p>



<h3 class="wp-block-heading"><span id="toc19">UNIQUEと組み合わせて重複なしリストを作る</span></h3>



<p class="wp-block-paragraph">抽出結果から重複を除いたリストが欲しいときは、<a href="https://mashukabu.com/excel-function-howto-use-unique/">UNIQUE関数</a>で包みます。たとえば「営業の氏名一覧（重複なし）」なら、対象列を氏名に絞って次のように書きます。</p>



<pre class="wp-block-code"><code>=UNIQUE(FILTER(C2:C6, B2:B6=&quot;営業&quot;, &quot;&quot;))</code></pre>



<p class="wp-block-paragraph">部署マスタから「実際に登場する部署名の一覧」を作るときなどに重宝します。FILTERとUNIQUE、SORTを組み合わせたスピル活用は、<a href="https://mashukabu.com/excel-unique-filter-sort-sequence-spill/">UNIQUE・FILTER・SORT・SEQUENCEのスピル活用まとめ</a>でさらに深掘りしています。</p>



<h3 class="wp-block-heading"><span id="toc20">HSTACKで離れた列を結合してから抽出する</span></h3>



<p class="wp-block-paragraph">「氏名（C列）と売上（D列）だけ、しかも順番を入れ替えて抽出したい」のように、離れた列や順序を組み替えたいときはHSTACKが便利です。HSTACKは複数の範囲を横方向に連結する関数で、Microsoft 365とExcel 2024で使えます。</p>



<pre class="wp-block-code"><code>=FILTER(HSTACK(C2:C6, D2:D6), B2:B6=&quot;営業&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">この結果は、営業の行について氏名と売上だけを横並びにした表になります。表示したい列だけをHSTACKで組み立ててからFILTERにかけるのがコツです。</p>



<h3 class="wp-block-heading"><span id="toc21">部署別の在席リストを自動生成する</span></h3>



<p class="wp-block-paragraph">セル参照と組み合わせると、入力欄を1つ変えるだけで切り替わるリストが作れます。G1セルに見たい部署名を入れておき、次の数式を別の場所に置きます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D6, B2:B6=G1, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">G1を「営業」にすれば営業の一覧、「経理」にすれば経理の一覧へ瞬時に切り替わります。G1をドロップダウン（データの入力規則）にしておけば、クリックだけで部署別リストを呼び出せる簡易ツールの完成です。</p>



<h3 class="wp-block-heading"><span id="toc22">Googleスプレッドシートでも使えるか</span></h3>



<p class="wp-block-paragraph">FILTER関数はGoogleスプレッドシートにも存在し、考え方は同じです。ただし複数条件の書き方に違いがあります。Excelでは第2引数の中で <code>*</code> や <code>+</code> を使いましたが、スプレッドシートでは<strong>引数をカンマで並べる</strong>だけでAND条件になります。</p>



<pre class="wp-block-code"><code>（スプレッドシート）=FILTER(A2:D6, B2:B6=&quot;営業&quot;, D2:D6&gt;=100)</code></pre>



<p class="wp-block-paragraph">また0件のときのエラーも異なり、スプレッドシートは <code>#N/A</code> を返します（Excelは #CALC!）。回避策は <code>IFERROR(FILTER(...), "")</code> で囲む方法が定番です。スプレッドシート側の詳しい使い方は<a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方</a>で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc23">まとめ</span></h2>



<p class="wp-block-paragraph">ExcelのFILTER関数は、条件に合う行を元データを崩さずに別の場所へ抽出できる、動的配列関数の代表格です。最後に要点を整理します。</p>



<ul class="wp-block-list"><li><strong>複数条件</strong>: AND条件は <code>*</code>、OR条件は <code>+</code>、除外は <code><></code>。各条件はカッコで囲む</li><li><strong>#CALC!</strong>: 0件のときは第3引数（空の場合）を指定すれば回避できる</li><li><strong>#SPILL!</strong>: スピル先のデータ・結合セル・テーブル内使用の3パターンを切り分ける</li><li><strong>旧Excel</strong>: INDEX＋SMALL＋IFの配列数式（Ctrl+Shift+Enter）で代替できる</li><li><strong>使い分け</strong>: 別の場所に出して自動更新したいならFILTER、目視だけならオートフィルター</li></ul>



<p class="wp-block-paragraph">SORTやUNIQUE、HSTACKと組み合わせれば、抽出から並べ替え・重複除去まで1つの数式で完結します。まずは手元の表で <code>=FILTER(範囲, 条件, "該当なし")</code> を打ち込み、結果がスピルする感覚をつかんでみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-filter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
