「リストの中で実際にデータが入力されているセルの数を知りたい」
「アンケートで回答済みの件数を確認したい」
「データベースの登録済みレコード数を把握したい」
このような場面で活躍するのが、COUNTA関数です。空白ではないセルの個数を自動で数えてくれる、データ分析の基本となる重要な関数です。
この記事では、COUNTA関数の基本的な使い方から応用例、関連するカウント関数との違いまで、初心者の方にもわかりやすく解説します。
COUNTA関数の基本構文と概要

基本構文
=COUNTA(値1, [値2], [値3], ...)
関数の概要
COUNTA関数は、指定した範囲内で空白でないセルの個数をカウントします。
数値、文字列、論理値、エラー値など、何らかの値が入力されているセルをすべて数えます。
カウント対象となるもの
- 数値:1, 100, -50, 3.14など
- 文字列:「りんご」、「ABC」、「123」(文字列として入力された数字)
- 論理値:TRUE, FALSE
- エラー値:#DIV/0!, #VALUE!, #REF!など
- 数式の結果:=A1+B1 などの数式(結果が空白””でない場合)
- スペース:半角・全角スペースのみのセル
カウント対象とならないもの
- 完全に空白のセル:何も入力されていないセル
- 空文字列を返す数式:=””という数式の結果
基本的な使用例
単純な範囲のカウント
# A列の1行目から10行目までの非空白セルをカウント
=COUNTA(A1:A10)
# 複数の範囲を同時にカウント
=COUNTA(A1:A5, C1:C5, E1:E5)
# 個別のセルを指定
=COUNTA(A1, B2, C3, D4)
具体例:出席管理表
A B
1 名前 出席
2 田中 ○
3 佐藤
4 鈴木 ○
5 高橋 ×
6 山田 ○
=COUNTA(B2:B6) → 結果: 4(○、×、○の4つのセル)
実際のワークシートでの活用
# 顧客リストの登録件数確認
A B C D
1 顧客名 電話番号 メール 登録件数
2 田中商事 03-1234 tanaka@ =COUNTA(A2:A100)
3 佐藤企画 sato@
4 鈴木製作 06-5678
5 (空白)
# D2セルの結果: 3(田中商事、佐藤企画、鈴木製作)
COUNT関数との違いを理解する

ExcelにはCOUNTA以外にも似たような関数があります。違いを明確に理解しましょう。
主要なカウント関数の比較
関数 | カウント対象 | 例 |
---|---|---|
COUNT() | 数値のみ | 1, 100, -50など |
COUNTA() | 空白以外すべて | 数値、文字列、論理値、エラー値 |
COUNTBLANK() | 空白セルのみ | 空のセルや空文字列 |
実際の比較例
# サンプルデータ
A
1 100 ← 数値
2 テキスト ← 文字列
3 ← 空白
4 TRUE ← 論理値
5 #DIV/0! ← エラー値
6 0 ← 数値(ゼロ)
# 各関数の結果
=COUNT(A1:A6) → 結果: 2(100と0のみ)
=COUNTA(A1:A6) → 結果: 5(空白以外すべて)
=COUNTBLANK(A1:A6) → 結果: 1(空白セルのみ)
実用的な活用例
アンケート回答率の計算
# アンケート回答データ
A B C D
1 ID Q1回答 Q2回答 Q3回答
2 001 満足 普通
3 002 良い 満足
4 003 不満 普通 普通
5 004 満足 不満
# 各質問の回答率計算
E1: Q1回答率 =COUNTA(B2:B5)/COUNTA(A2:A5)*100&"%"
F1: Q2回答率 =COUNTA(C2:C5)/COUNTA(A2:A5)*100&"%"
G1: Q3回答率 =COUNTA(D2:D5)/COUNTA(A2:A5)*100&"%"
# 結果: Q1=75%, Q2=50%, Q3=75%
在庫管理での商品登録数確認
# 商品マスターでの活用
A B C D
1 商品コード 商品名 価格 在庫数
2 P001 りんご 150 20
3 P002 バナナ 100
4 P003 200 15
5 P004 オレンジ 180 0
# 各項目の登録状況
E1: 商品コード登録数 =COUNTA(A2:A5) → 結果: 4
E2: 商品名登録数 =COUNTA(B2:B5) → 結果: 3
E3: 価格登録数 =COUNTA(C2:C5) → 結果: 3
E4: 在庫数登録数 =COUNTA(D2:D5) → 結果: 3
プロジェクト進捗管理
# タスク管理表での活用
A B C
1 タスク名 担当者 完了日
2 設計 田中 2024/1/15
3 開発 佐藤
4 テスト 鈴木 2024/2/1
5 リリース
# 進捗状況の把握
D1: 総タスク数 =COUNTA(A2:A5) → 結果: 4
D2: 担当者決定数 =COUNTA(B2:B5) → 結果: 2
D3: 完了タスク数 =COUNTA(C2:C5) → 結果: 2
D4: 進捗率 =D3/D1*100&"%" → 結果: 50%
条件付きカウントとの組み合わせ

COUNTIF関数との使い分け
# データの例
A B
1 部署 評価
2 営業 良
3 技術 優
4 営業
5 管理 良
6 技術 可
# 全体のデータ数
=COUNTA(A2:A6) → 結果: 5
# 評価が入力されているデータ数
=COUNTA(B2:B6) → 結果: 4
# 営業部のデータ数
=COUNTIF(A2:A6, "営業") → 結果: 2
# 営業部で評価が入力されているデータ数
=COUNTIFS(A2:A6, "営業", B2:B6, "<>") → 結果: 1
データ完整性チェック
# 顧客情報の完整性チェック
A B C D E
1 ID 氏名 電話 メール 住所
2 001 田中 090- tanaka 東京
3 002 佐藤 sato@
4 003 080- 大阪
5 004 鈴木 070- suzuki
# 各項目の入力率
F1: ID入力率 =COUNTA(A2:A5)/ROWS(A2:A5)*100&"%"
F2: 氏名入力率 =COUNTA(B2:B5)/ROWS(B2:B5)*100&"%"
F3: 電話入力率 =COUNTA(C2:C5)/ROWS(C2:C5)*100&"%"
F4: メール入力率 =COUNTA(D2:D5)/ROWS(D2:D5)*100&"%"
F5: 住所入力率 =COUNTA(E2:E5)/ROWS(E2:E5)*100&"%"
高度な活用テクニック
配列数式との組み合わせ
# 複数列での一括カウント
=SUMPRODUCT(COUNTA(A2:A10), COUNTA(B2:B10), COUNTA(C2:C10))
# 条件付き一括カウント
=SUMPRODUCT((A2:A10<>"")*1) # COUNTA(A2:A10)と同じ結果
動的な範囲指定
# 最終行まで自動でカウント
=COUNTA(INDIRECT("A2:A"&COUNTA(A:A)))
# OFFSET関数との組み合わせ
=COUNTA(OFFSET(A1,1,0,COUNTA(A:A)-1,1))
TEXT関数との組み合わせ
# カウント結果を文字列として表示
="登録件数: "&COUNTA(A2:A100)&"件"
# 条件による表示切り替え
=IF(COUNTA(A2:A10)=0, "データなし", COUNTA(A2:A10)&"件のデータがあります")
エラー処理とトラブルシューティング
よくあるエラーと対処法
1. 期待した数と結果が異なる
原因1: スペースが入力されている
# 見た目は空白だが、実際にはスペースが入力されている
=COUNTA(A1:A10) # スペースもカウントされる
# 対処法: TRIM関数で前後のスペースを除去してからカウント
=SUMPRODUCT(--(TRIM(A1:A10)<>""))
原因2: 数式が空文字列を返している
# IF関数で空文字列を返している場合
=IF(B1>0, B1, "") # ""は空文字列なのでCOUNTAでカウントされない
# 対処法: 空文字列の確認
=COUNTBLANK(A1:A10) # 空白セルの数を確認
2. 参照範囲のエラー
# エラー: 範囲が正しく指定されていない
=COUNTA(A1:A) # 不正な範囲指定
# 正しい方法
=COUNTA(A1:A100) # 明確な範囲指定
=COUNTA(A:A) # 列全体を指定(推奨されない場合もある)
データ検証での活用
# 必須項目の入力チェック
=IF(COUNTA(A2:E2)=5, "完了", "入力不足")
# 入力率の計算
="入力率: "&ROUND(COUNTA(A2:A100)/100*100,1)&"%"
# 未入力項目の特定
=IF(A2="", "氏名未入力", IF(B2="", "電話番号未入力", "入力完了"))
パフォーマンスの最適化
大量データでの効率的な使用
# 効率的でない例
=COUNTA(A:A) # 列全体を参照(100万行以上を処理)
# 効率的な例
=COUNTA(A1:A1000) # 必要な範囲のみを指定
# 動的範囲の効率的な指定
=COUNTA(A1:INDEX(A:A,MATCH(TRUE,A:A<>"",0)+ROWS(A:A)))
メモリ使用量の最適化
- 不要に大きな範囲を指定しない
- 複雑な数式は段階的に分けて計算
- 揮発性関数(INDIRECT等)の使用を最小限に
よくある質問と回答

Q: COUNTAでゼロを除外したい場合は?
A: COUNTAはゼロもカウントします。ゼロを除外したい場合は条件を追加します。
# ゼロを除外したカウント
=COUNTA(A1:A10)-COUNTIF(A1:A10,0)
# または
=COUNTIFS(A1:A10,">0")+COUNTIFS(A1:A10,"<0")
Q: 複数の条件でCOUNTAを使いたい場合は?
A: SUMPRODUCT関数と組み合わせて条件付きカウントを実現できます。
# 特定の列が空白でなく、かつ別の列が特定の値の場合
=SUMPRODUCT((A1:A10<>"")*(B1:B10="営業"))
# 複数列すべてに値が入力されている行数
=SUMPRODUCT((A1:A10<>"")*(B1:B10<>"")*(C1:C10<>""))
Q: COUNTAでエラー値を除外したい場合は?
A: ISERROR関数と組み合わせてエラー値を除外できます。
# エラー値を除外したカウント
=SUMPRODUCT(--(NOT(ISERROR(A1:A10)))*(A1:A10<>""))
# または、先にエラー値を修正
=COUNTA(IFERROR(A1:A10,""))
まとめ
COUNTA関数は、Excelでのデータ分析において基本中の基本となる重要な関数です。空白でないセルの個数を数えることで、データの完整性チェックや進捗管理、分析対象の把握などに活用できます。
重要なポイント
- 関数名に注意:「COUNTIA」ではなく「COUNTA」が正しい
- カウント対象:数値、文字列、論理値、エラー値など空白以外すべて
- COUNT関数との違い:COUNTは数値のみ、COUNTAは空白以外すべて
- 実用性:データ完整性チェック、進捗管理、分析準備に最適
活用のコツ
場面 | 使い方 | 効果 |
---|---|---|
データ件数確認 | =COUNTA(範囲) | 登録済みデータ数の把握 |
入力率計算 | =COUNTA(範囲)/総数*100 | データ完整性の評価 |
進捗管理 | =COUNTA(完了列)/COUNTA(タスク列) | 作業進捗の可視化 |
品質チェック | 複数列でのCOUNTA比較 | 欠損データの特定 |
コメント