- 作成日 : 2025年9月17日
スプレッドシートのCOUNTIF関数の使い方!複数範囲や条件設定方法まで解説
Googleスプレッドシートでデータを集計するときに欠かせないのが COUNTIF関数 です。条件に合致するセルの数を自動で数えてくれるため、売上管理や在庫チェック、アンケート集計など、幅広いシーンで役立ちます。
この記事では、COUNTIF関数の基本的な使い方から、ワイルドカードや日付条件、複数範囲や別シートの参照といった応用テクニックまでを解説します。業務で実際に使える実例を交えながら、効率的にデータを扱う方法を学んでいきましょう。
目次
スプレッドシートのCOUNTIF関数の基本的な使い方
COUNTIF関数は、指定した範囲内で特定の条件を満たすセルの個数をカウントする関数です。特定のテキストと完全に一致するセルや、指定した数値より大きい・小さいセルを数えます。
基本的な構文は「=COUNTIF(範囲, 条件)」で、範囲には検索対象のセル範囲を、条件にはカウントしたい値や条件式を指定します。COUNTIF関数は、大量のデータから特定の情報を素早く抽出するのに欠かせない関数です。
範囲内で完全に一致するセルの数を返す
範囲内で、指定した文字列と完全に一致するセルの数を返します。 テキストの検索では、アルファベットの大文字と小文字は区別されません(例:”Apple”と”apple”は同じと見なされます)。
使用例:A1からA100の範囲で「完了」というセルを数える
=COUNTIF(A1:A100, “完了”)
A1からA100までの範囲に「完了」というテキストが何個あるかを数えたい場合、「=COUNTIF(A1:A100,”完了”)」と入力します。この数式により、指定範囲内の「完了」と完全に一致するセルの個数が返されます。
テキストの比較では、大文字と小文字は区別されないため、「完了」「KANRYOU」は異なる値として扱われますが、「KANRYOU」と「Kanryou」は同じ値として扱われます。
条件を満たすセルの数を数える
比較演算子(>, <, =, <>など)を使い、数値が条件を満たすセルの数を数えます。条件式は必ずダブルクォーテーション “” で囲んでください。
使用例:B1からB100の範囲で、100より大きい数値が入ったセルを数える
=COUNTIF(B1:B100, “>100”)
使用例の条件指定では、B列の1行目から100行目までで、100より大きい数値が入力されているセルの個数をカウントします。比較演算子として、「>」(より大きい)、「<」(より小さい)、「>=」(以上)、「<=」(以下)、「<>」(等しくない)、「=」(等しい)が使用できます。
ワイルドカードを使った条件指定
COUNTIF関数では、ワイルドカード(*, ?)を使うと、完全一致だけでなく「特定の文字を含む」といった、より柔軟な条件でセルを数えられます。アスタリスク(*)は任意の文字列を表し、クエスチョンマーク(?)は任意の1文字を表します。
アスタリスク(*):任意の文字列
アスタリスク(*)は、文字数に関係なく、あらゆる文字列の代わりになります。
使用例:A1からA100の範囲で「株式会社」という文字を含む全てのセルを数える
=COUNTIF(A1:A100, “*株式会社*”)
これにより、「〇〇株式会社」や「株式会社△△」など、セルのどこかに「株式会社」が含まれていれば、すべてカウント対象となります。
クエスチョンマーク(?):任意の1文字
クエスチョンマーク(?)は、任意の1文字の代わりになります。文字数が決まっているパターンを検索するのに便利です。
使用例:C1からC100の範囲で「1月売上」〜「9月売上」のように、1文字の月の売上データを数える
=COUNTIF(C1:C100, “?月売上”)
もし10月や12月など2桁の月も対象にしたい場合は、??月売上 のように ? を2つ使います。
日付を条件にする場合
日付を条件にする場合は、比較演算子と日付文字列、またはTODAYのような日付関数を & で結合するのがポイントです。
特定の日付を条件にする
日付は “YYYY/MM/DD” の形式で、比較演算子と一緒に文字列として指定します。
使用例:D1からD100の範囲で、2025年1月15日以降の日付を数える
=COUNTIF(D1:D100, “>=2025/1/15”)
今日の日付を基準にする(TODAY関数)
TODAY() 関数を使うと、「今日より前」「今日以降」といった動的な条件を設定できます。比較演算子 “>” などと TODAY() を & (アンパサンド)で結合します。
使用例:D1からD100の範囲で、今日より前の日付(過去の日付)を数える
=COUNTIF(D1:D100, “<“&TODAY())
補足:「今月のデータ」のように期間を指定したい場合は、開始日と終了日の2つの条件が必要になるため、COUNTIFS関数を使うのがよりシンプルで効率的です。
セル参照を使った条件設定
数式に直接条件を書き込むのではなく、別のセルの値を条件として参照することもできます。
セルの値を直接条件にする
F1セルに検索したい文字列(例:完了)を入力しておき、数式はそのセルを参照します。F1の値を変えるだけで、数式を修正せずに集計結果を更新できます。
使用例:F1セルに入力されたテキストを、A1:A100の範囲から探して数える
=COUNTIF(A1:A100, F1)
比較演算子とセル参照を組み合わせる
比較演算子とセルの値を組み合わせる場合も & を使って結合します。これは実用的なテクニックの一つです。
使用例:H1セルに 100 と入力し、B1:B100の範囲でその値より大きいセルを数える
=COUNTIF(B1:B100, “>”&H1)
この方法を使えば、条件値を入力するセルを用意するだけで、誰でも簡単に操作できるインタラクティブなレポートが作成できます。
スプレッドシートのCOUNTIF関数で複数範囲を指定する方法
同じシート内の複数範囲を指定する方法
COUNTIF関数は一つの範囲しか指定できません。複数の離れた範囲を集計するには、複数のCOUNTIFを合算するか、SUMPRODUCTやARRAYFORMULAを使って一括で処理します。
単純な足し算
各範囲でCOUNTIFを実行し、+で合計します。範囲が2〜3個程度であれば、この方法が最も簡単です。
=COUNTIF(A1:A50,”完了”) + COUNTIF(C1:C50,”完了”)
SUMPRODUCT関数
SUMPRODUCTを使い、複数の範囲を配列としてまとめて指定します。数式をすっきりとさせたい場合に有効です。
=SUMPRODUCT(COUNTIF({A1:A50; C1:C50},”完了”))
ARRAYFORMULA関数
GoogleスプレッドシートではARRAYFORMULAが便利です。複数のCOUNTIFの結果をSUMで合計できます。
=ARRAYFORMULA(SUM(COUNTIF({A1:A50;C1:C50;E1:E50},”完了”)))
複数シート間での範囲指定
COUNTIFはシートをまたいだ範囲指定(3D参照)ができないため、各シートで集計して合計するか、INDIRECT関数で動的に複数シートの範囲を生成し、一括で集計する必要があります。
各シートの数式を足し算
シートごとにCOUNTIFで計算し、結果を合計します。シート数が少ない場合に適しています。
=COUNTIF(Sheet1!A:A,”完了”) + COUNTIF(Sheet2!A:A,”完了”)
INDIRECT関数で動的に集計
セル(例:G1:G3)にシート名のリストを作成し、INDIRECT関数で参照します。シートの追加や削除に柔軟に対応できる方法です。 =SUM(
COUNTIF(INDIRECT(“‘”&G1&”‘!A:A”),”完了”),
COUNTIF(INDIRECT(“‘”&G2&”‘!A:A”),”完了”),
COUNTIF(INDIRECT(“‘”&G3&”‘!A:A”),”完了”))
範囲を動的に拡張・縮小する方法
データの増減のたびに数式を修正する手間を省くため、INDEXとCOUNTAなどの関数や「名前付き範囲」を活用し、集計範囲を自動で拡張・縮小させるのが効率的です。
INDEXとCOUNTAを組み合わせる
COUNTAでデータのある行数を数え、INDEXでその最終行のセル参照を取得することで、自動的に範囲を調整します。
=COUNTIF(A1:INDEX(A:A,COUNTA(A:A)),”完了”)
「名前付き範囲」の活用
範囲に名前(例:売上データ)を付けると、数式が読みやすくなります(=COUNTIF(売上データ,”完了”))。
この名前付き範囲の定義に上記のINDEX関数などを使えば、動的な範囲を簡単に管理できます。
スクリプトによる自動化(上級者向け)
Google Apps Scriptなどを使って処理を自動化する方法もあります。スクリプトでデータの範囲を自動検出し、その範囲に対して集計処理を行う仕組みを構築すれば、完全に自動化された集計システムを作ることも可能です。
スプレッドシートのCOUNTIF関数で別シートを参照する方法
別シートを参照してカウントする
別シートのデータをカウントする場合、’シート名’!範囲という形式で参照先を指定します。シート名を範囲の前に記述し、!で区切ります。
使用例:売上データシートのA列にある「完了」を数える
=COUNTIF(売上データ!A:A, “完了”)
シート名にスペースや特殊文字が含まれる場合は、 シート名をシングルクォーテーション ‘ ‘ で囲む必要があります。日本語やスペースを含むシート名では、必ずこの記述を使いましょう。
使用例:’2025年 8月 売上’シートのB列で、10000より大きい数値を数える
=COUNTIF(‘2025年 8月 売上’!B:B, “>10000”)
別シート参照でも、通常のセル参照と同様に絶対参照($A$1)が使えます。数式をコピーして使う際に、参照範囲を固定したい場合に便利です。
IMPORTRANGE関数との組み合わせ
別のスプレッドシートファイルにあるデータを集計するには、まずIMPORTRANGE関数でデータを読み込み、その結果に対してCOUNTIFを適用します。
COUNTIFの範囲部分に、IMPORTRANGE関数をそのまま入れ込みます。
使用例:指定したURLの別ファイルにあるデータシートのA列から「完了」を数える
=COUNTIF(IMPORTRANGE(“スプレッドシートのURL”, “データシート!A:A”), “完了”)
初めて外部ファイルを参照すると、セルに#REF!エラーが表示されます。これは正常な動作です。セルを選択し、表示される「アクセスを許可」ボタンを一度クリックしてください。許可が完了すると、データが正しく読み込まれます。
シート間の動的参照とINDIRECT関数
セルの入力値に応じて参照するシートを切り替えたい場合、INDIRECT関数が便利です。数式を書き換えることなく、参照先を動的に変更できます。
A1セルにシート名(例:8月)を入力すると、そのシートを集計対象にします。文字列結合演算子&を使って、セル参照と範囲の文字列を結合するのがポイントです。
使用例:A1セルに入力されたシート名のB列にある「完了」を数える
=COUNTIF(INDIRECT(A1&”!B:B”), “完了”)
SUMPRODUCTと組み合わせることで、Sheet1, Sheet2, … Sheet12のような連番のシートを一括で集計することも可能です。
使用例:Sheet1からSheet12までの全シートのA列にある「完了」の総数を計算する
=SUM(
COUNTIF(INDIRECT(“Sheet1!A:A”),”完了”),
COUNTIF(INDIRECT(“Sheet2!A:A”),”完了”),
…
COUNTIF(INDIRECT(“Sheet12!A:A”),”完了”))
スプレッドシートのCOUNTIF関数で空白以外をカウントする方法
空白ではないセルを数える方法
空白以外のセルを数える基本的な方法として、COUNTA関数とCOUNTIF関数があります。
COUNTA関数を使う
COUNTAは、範囲内で何らかの値や数式が入っているセルの個数を数えるための関数です。単純に空白以外を数えたい場合は、この関数が簡単で効率的です。
使用例:A1からA100の範囲で、空白ではないセルの総数を数える
=COUNTA(A1:A100)
COUNTIF関数と異なり、条件を指定する必要がないため、単純に空白以外をカウントしたい場合はこちらの方が効率的です。
COUNTIF関数を使う
COUNTIFでは、空白以外のセルをカウントする方法で、「<>」(等しくない)演算子を使用します。
使用例:A1からA100の範囲で、空白ではないセルを数える
=COUNTIF(A1:A100, “<>”)
A1からA100の範囲で、空白ではないすべてのセルがカウントされます。この方法は、テキスト、数値、日付など、あらゆる種類のデータを含むセルをカウントします。
見た目が空白でもカウントされるセル
上記のCOUNTAやCOUNTIF(範囲, “<>”)には注意点があります。それは、人の目には空白に見えても、データとしては空白ではないセルもカウントしてしまうことです。
- 数式による空白(空文字 “”)
=IF(A1>10, “OK”, “”) のような数式で返される “” は、見た目は空白ですが、長さ0の文字列として扱われるため、カウント対象になります。 - スペースのみのセル
半角または全角のスペースだけが入力されたセルも、空白ではないと見なされ、カウントされてしまいます。
解決策として、ワイルドカードで「文字があるセル」を数える方法があります。
「1文字以上の何かが入力されているセル」だけを正確に数えたい場合は、ワイルドカード * と ? を組み合わせた “?*” を使うのが有効です。
使用例:真の空白や空文字(“”)を除き、1文字以上の文字・数値が入っているセルのみを数える
=COUNTIF(A1:A100, “?*”)
?は「任意の1文字」、*は「任意の文字列」を意味するため、”?*”は「最低1文字以上」という条件になり、スペースのみのセルもカウントから除外できます(スペースが複数ある場合を除く)。
特定の条件を除外してカウントする
「空白ではない、かつ特定の文字列でもないセル」のように、複数の条件で絞り込みたい場合は、COUNTIFS関数が最適です。
一つの条件を除外する
空白以外の中から、さらに「未定」という文字列を除外したい場合、全体の数から除外分を引き算するのが簡単です。
使用例:空白でも「未定」でもないセルを数える
=COUNTIF(A1:A100, “<>”) – COUNTIF(A1:A100, “未定”)
複数の条件を除外する(COUNTIFS)
除外したい条件が複数ある場合は、COUNTIFS関数でまとめて指定する方がスマートです。
使用例:空白でも「未定」でも「保留」でもないセルを数える
=COUNTIFS(A1:A100, “<>”, A1:A100, “<>未定”, A1:A100, “<>保留”)
他の列の条件と組み合わせる
COUNTIFSを使えば、「B列が『完了』の行のうち、C列が空白ではないセル」といった、より実践的な集計も行えます。
使用例:B列が「完了」で、かつC列が空白ではない行の数を数える
=COUNTIFS(B1:B100, “完了”, C1:C100, “<>”)
3つ以上の複数条件を指定する方法
COUNTIFS関数による複数条件の基本
3つ以上の条件を指定する場合、COUNTIF関数の拡張版であるCOUNTIFS関数を使用します。COUNTIFS関数は、複数の範囲と条件のペアを指定でき、すべての条件を満たすセルのみをカウントします。基本構文は「=COUNTIFS(範囲1,条件1,範囲2,条件2,範囲3,条件3,…)」です。
たとえば、売上データで「地域が東京」かつ「商品がA」かつ「金額が10000以上」という3つの条件を満たす件数をカウントする場合、「=COUNTIFS(A:A,”東京”,B:B,”A”,C:C,”>=10000″)」と記述します。各条件はAND条件として評価され、すべてを満たす行のみがカウントされます。
日付範囲を含む複数条件も設定できます。「=COUNTIFS(D:D,”>=”&DATE(2025,1,1),D:D,”<=”&DATE(2025,1,31),E:E,”完了”,F:F,”>50000″)」という数式は、2025年1月中で、ステータスが完了、かつ金額が50000より大きいデータをカウントします。
OR条件を含む複雑な条件設定
COUNTIFS関数は基本的にAND条件ですが、OR条件を実現するには工夫が必要です。複数のCOUNTIFS関数を足し合わせることで、OR条件を表現できます。「=COUNTIFS(A:A,”東京”,B:B,”A”)+COUNTIFS(A:A,”大阪”,B:B,”A”)」は、「地域が東京または大阪」かつ「商品がA」という条件になります。
より複雑なOR条件の場合、SUMPRODUCT関数を活用します。「=SUMPRODUCT(((A1:A100=”東京”)+(A1:A100=”大阪”)+(A1:A100=”名古屋”))*(B1:B100=”A”)*(C1:C100>10000))」という数式は、地域が3都市のいずれかで、商品がAで、金額が10000より大きいデータをカウントします。
配列定数を使った方法もあります。「=SUMPRODUCT(COUNTIFS(A:A,{“東京”,”大阪”,”名古屋”},B:B,”A”,C:C,”>10000″))」のように、波括弧内に複数の値を指定することで、OR条件を簡潔に表現できます。ただし、この方法は単一の条件列に対してのみ有効です。
ワイルドカードと比較演算子の組み合わせ
複数条件でワイルドカードを使用する場合、各条件で異なるパターンマッチングが可能です。「=COUNTIFS(A:A,”*株式会社*”,B:B,”製品*”,C:C,”>=”&TODAY()-30)」という数式は、会社名に「株式会社」を含み、製品名が「製品」で始まり、日付が過去30日以内のデータをカウントします。
否定条件とワイルドカードの組み合わせも有用です。「=COUNTIFS(A:A,”<>test”,B:B,”<>”,C:C,”>0″)」は、A列に「test」を含まず、B列が空白でなく、C列が正の数であるデータをカウントします。複数の除外条件を組み合わせることで、精密なフィルタリングが可能です。
部分一致と完全一致を混在させることもできます。「=COUNTIFS(A:A,”東京都*”,B:B,”=製品A”,C:C,”*円”)」という数式では、A列は「東京都」で始まる(部分一致)、B列は「製品A」と完全一致、C列は「円」で終わる(部分一致)という異なるマッチング方法を使用しています。
動的な複数条件の管理とメンテナンス
複数条件を管理しやすくするため、条件を別のセル範囲に定義する方法があります。条件表を作成し、そこから値を参照することで、条件の変更が容易になります。「=COUNTIFS(A:A,G1,B:B,G2,C:C,”>”&G3)」のように、G列に条件を入力しておけば、数式を変更せずに条件を更新できます。
名前付き範囲を使用すると、さらに可読性が向上します。条件となる値に「地域条件」「商品条件」「金額条件」などの名前を付け、「=COUNTIFS(売上地域,地域条件,売上商品,商品条件,売上金額,”>”&金額条件)」のように記述できます。これにより、数式の意味が明確になります。
Google Apps Scriptを使用すれば、さらに高度な条件管理が可能です。条件をスプレッドシートの設定シートから読み込み、動的にCOUNTIFS関数を生成するスクリプトを作成できます。これにより、条件の数や種類が変動する場合でも、柔軟に対応できるシステムを構築できます。
入れ子条件と条件の優先順位
複雑なビジネスロジックを実装する場合、条件に優先順位を設定する必要があります。SUMPRODUCT関数とIF関数を組み合わせることで、入れ子条件を表現できます。「=SUMPRODUCT((A1:A100=”高”)*((B1:B100>100000) + ((B1:B100>50000) * (C1:C100=”A”))))」のような数式で、優先度が「高」の場合に、金額に応じて異なる条件を適用できます。
条件の評価順序も重要です。パフォーマンスを考慮すると、最も制限的な条件を先に評価することで、処理速度が向上します。たとえば、1000件のデータで地域が「東京」のものが100件、その中で金額が10万円以上が10件の場合、金額条件を先に評価するよりも、地域条件を先に評価する方が効率的です。
条件の組み合わせが多い場合は、ヘルパー列を使用する方法も検討してください。複雑な条件判定を別の列で行い、その結果をCOUNTIF関数でカウントすることで、数式の可読性とメンテナンス性が向上します。たとえば、Z列に「=AND(A1=”東京”,B1>10000,C1=”完了”)」のような判定式を入れ、「=COUNTIF(Z:Z,TRUE)」でカウントする方法です。
COUNTIF関数をマスターしてデータ分析力を向上させよう
COUNTIF関数は、条件に応じたセルの数を簡単にカウントできる便利な関数です。基本の構文を理解し、ワイルドカードや日付判定、セル参照などを活用すれば、複雑な条件にも対応できます。
また、複数範囲や別シート、空白判定を組み合わせた使い方を習得すれば、日常業務でのデータ分析が格段に効率化します。実務でCOUNTIF関数を使いこなすことで、正確でスピーディーな意思決定を支援できるようになるでしょう。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
HYPERLINK関数の使い方や応用をわかりやすく解説
「HYPERLINK関数」は、Excelなどのスプレッドシートにおいて、特定のURLやファイル、シートへのリンクを簡単に作成するための強力なツールです。シンプルな構文で多様な用途に対応できるこの関数を理解することで、データ管理や分析作業がよ…
詳しくみるYEARFRAC関数完全ガイド:エクセルで期間を年単位で計算する方法
YEARFRAC関数は、2つの日付間の期間を年単位の小数で表す関数です。この関数を使用することで、正確な経過年数を計算でき、利息計算、勤続年数の算出、プロジェクト期間の測定など、様々なビジネスシーンで活用できます。 本記事では、YEARFR…
詳しくみるExcel ROWS関数とは?範囲の行数のカウントや応用例を解説
ExcelのROWS関数(ロウズ関数)は、指定した範囲内に何行あるかを素早くカウントできる便利な関数です。データ集計や表の作成、重複チェックなど、多くの作業で活用でき、手作業によるカウントミスや工数を減らせます。 この記事では、ROWS関数…
詳しくみるERF関数の使い方:誤差関数を計算して統計分析を行う方法
ERF関数は、誤差関数(Error Function)の値を計算する統計関数です。正規分布に関連する確率計算や、品質管理における不良品率の推定、科学技術計算での誤差評価など、高度な統計分析で使用されます。例えば、製造工程での品質のばらつきを…
詳しくみるMID関数の使い方をわかりやすく解説
Excelやスプレッドシートを使う際に、データ処理や分析に役立つ関数が多数存在します。その中でも、特定の文字列を抽出することができるMID関数は非常に便利です。文字列の一部を簡単に取り出し、さまざまな状況で活用することができます。本記事では…
詳しくみるヒストグラムをエクセルで簡単に作る方法を解説
ヒストグラムは、データの分布を視覚的に示すための重要なグラフです。特にエクセルを使用すれば、簡単にヒストグラムを作成することができ、分析や報告の際に役立ちます。本記事では、エクセルを使ったヒストグラムの作成方法を具体的に解説します。データの…
詳しくみる