Menu

COUNTIFで空白以外のセルを数える方法: COUNTAとの違いも

=COUNTIF(B2:B8,"<>")は、B2:B8のうち空白でないセルを数え、COUNTAと同じ結果になります。COUNTIFSでほかの条件を加える方法と、空に見えるだけのセルの扱い方を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=COUNTIF(B2:B8,"<>")は、B2:B8のうち空白でないセルを数えます。<>は「等しくない」という意味で、後ろに何もなければ空のセルと比べることになります。=COUNTA(B2:B8)も同じ数になります。

入力済みのセルを数える
F2
ABCDEF
1NameEmailPhoneCountResult
2Anaana@mail.com555-0101Emails, COUNTIF5
3Ben555-0102Emails, COUNTA5
4Caracara@mail.comMissing emails2
5Dandan@mail.com555-0104Phones4
6EvaRows7
7Finnfinn@mail.com555-0106
8Gusgus@mail.com
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

7件の連絡先のうち5件にメールアドレスがあるので、F2とF3はどちらも5を表示し、COUNTBLANKは足りない2件を数えます。入力済みと空白の件数を足すと、必ずF6の行数になります。B3にメールアドレスを入力すると、F2が1増えてF4が1減ります。

COUNTIFの空白以外とCOUNTAの違い

1つの範囲なら、=COUNTIF(B2:B8,"<>")と=COUNTA(B2:B8)は同じセルを数えます。空でないものすべてで、数値、日付、TRUE/FALSE、エラー値も含みます。COUNTAのほうが短く書けます。"<>"の形は2つ目の条件が必要になったときのためにあります。COUNTAは条件を受け取れませんが、COUNTIFSは受け取れるからです。

COUNTは別の関数で、数値と日付しか数えないので、名前の列では0になります。3つの比較はCOUNTとCOUNTAにあります。

空白以外の反対は""です。=COUNTIF(B2:B8,"")はCOUNTBLANKと同じように空のセルを数えます。

COUNTIFSで空白以外とほかの条件を組み合わせる

"<>"をCOUNTIFSの条件の1つに使います。下では、出荷日があれば注文が出荷済みという意味です。

空白以外と別の条件
F2
ABCDEF
1RegionOrderShippedConditionCount
2NorthA-1012026-01-08North, shipped2
3SouthA-102North, not shipped1
4NorthA-1032026-02-06Any region, shipped3
5EastA-1042026-02-20Order and date filled3
6SouthA-105
7NorthA-106
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

F2は日付のあるNorthの注文2件を、F3は日付のない1件を数えます。F5は2つの列に"<>"を指定しているので、両方が入力済みの行を数えます。同じ条件はSUMIFSやAVERAGEIFSでも使えます。=SUMIFS(D2:D7,C2:C7,"<>")なら、出荷済みの行についてだけ金額のD列を足します。

空に見えるだけのセル

スペースが入ったセルは空に見えますが文字列が入っていて、"<>"とCOUNTAはそれを数えます。ほかのシステムから貼り付けたデータや、スペースを入力して「消した」セルで起こります。スペースを取り除いて長さを調べれば、目に見える内容のあるセルを数えられます。

スペースは空白ではない
E2
ABCDE
1NameNoteCountResult
2Anacall backCOUNTA4
3Ben Visible content2
4CaraSpace in B3?1
5Danpaid
6Eva
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

B3にはスペースが1つ、B6には2つ入っています。COUNTAはそれらを2つの本当のメモと一緒に数えて4を表示します。SUMPRODUCT版は各セルのスペースを取り除き、何か残るものだけを数えるので2です。セル自体をきれいにするには、選択してDeleteキーを押すか、作業列でTRIMを使います。検索と置換ですべてのスペースを何もない文字に置き換えると、「call back」も「callback」になってしまいます。

空の文字列を返す数式

=IF(C2>0,C2,"")のような数式は、条件がFALSEのとき何も表示しませんが、セルは空ではありません。結果が空の文字列になる数式が入っているからです。数える関数によって扱いが違います。A2:A6にApple、""を返す数式、空のセル、5、Pearが入っているとき、Excelの結果は次のとおりです:

=COUNTA(A2:A6)                   4   counts the "" formula
=COUNTIF(A2:A6,"<>")             4   counts the "" formula
=COUNTBLANK(A2:A6)               2   counts the "" formula as blank
=COUNTIF(A2:A6,"")               2   counts the "" formula as blank
=SUMPRODUCT(--(LEN(A2:A6)>0))    3   counts only visible content
=COUNTIF(A2:A6,"?*")             2   counts text of at least one character

つまり数式のセルは空白としても空白以外としても数えられ、COUNTAとCOUNTBLANKを足すとセルの数より多くなります。このような数式で埋まった列では、何かを表示しているセルだけを数える=SUMPRODUCT(--(LEN(A2:A6)>0))を使います。2つ目の条件を付けるなら=SUMPRODUCT((B2:B6="North")*(LEN(A2:A6)>0))です。

練習: 空白以外と条件

やってみよう: 電話番号のあるParisの連絡先
F2
ABCDEF
1NameCityPhoneCountResult
2AnaParis555-0101Paris with phone
3BenLyon555-0102
4CaraParis
5DanParis555-0104
6EvaLyon
7FinnNice555-0106
8GusParis
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: Parisの連絡先のうち、C列に電話番号があるものを数えてください。数式はF2に書きます。

どの数式を使うか

数えたいもの数式
1つの範囲の入力済みのセル=COUNTA(B2:B8)
入力済みのセルと別の条件=COUNTIFS(A2:A8,"North",B2:B8,"<>")
2つの列が両方入力済みの行=COUNTIFS(B2:B8,"<>",C2:C8,"<>")
スペースと""の数式を除いた、目に見える内容のあるセル=SUMPRODUCT(--(LEN(TRIM(B2:B8))>0))
入力済みの文字列のセルだけ=COUNTIF(B2:B8,"?*")
空のセル=COUNTBLANK(B2:B8)

数えるのではなく1つのセルを調べるなら、=B2<>""はB2に何か表示されているときにTRUEを返し、=ISBLANK(B2)はB2が数式も入っていない本当の空のときだけTRUEを返します。

よくある質問

COUNTIFの"<>"はCOUNTAと同じですか?

1つの範囲なら同じです。=COUNTIF(B2:B8,"<>")と=COUNTA(B2:B8)は同じセル(文字列、数値、日付、TRUE/FALSE、エラー)を数えます。"<>"の形は、ほかの条件と並べられるCOUNTIFSのためにあります。

COUNTIFの"<>"はどういう意味ですか?

<>は「等しくない」で、後ろに何もなければ空のセルと比べることになります。つまり"<>"は「空白でない」、"<>North"は「Northと等しくない」という意味です。

空白でも0でもないセルを数えるには?

=COUNTIFS(B2:B8,"<>",B2:B8,"<>0")を使います。"<>0"だけだと空のセルも数えます。空のセルは0と等しくないからです。"<>"を加えると空のセルが除かれます。

COUNTAが空に見えるセルを数えるのはなぜですか?

そのセルは空ではありません。スペースか、空の文字列""を返す数式が入っています。目に見える内容のあるセルだけを数えるには=SUMPRODUCT(--(LEN(TRIM(B2:B8))>0))を使います。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める