• ベストアンサー

COUNTBLANK関数について

A1からA16まで数式が入っています。 ただし数式の結果によっては、空欄になっているセルがあります。 COUNTA関数を使ってA1からA16までのデーターが入っている個数を調べた場合、空白のセルにも数式が入っているためカウントされますよね。 では、COUNTBLANK関数を使ってA1からA16までの空白の個数を調べた場合どうなりますか? 実際には空白のセルにも式が入っているのだから、0にならないとおかしくないですか? 実際の結果は空白の個数をちゃんとカウントできます。 なぜでしょうか? 矛盾していると思うのですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>見た目が空白じゃないセル(答えが表示されている)はカウントされないのでふしぎなのですが・・・ COUNTBLANK関数では、数式の結果が表示される場合は、ブランク以外ですので、もちろんカウント対象になりません。 ただし、数式で空白文字列を返す場合は(数式の結果が重要)、未入力セルと同様にカウント対象になるということです。

その他の回答 (4)

回答No.5

No.3 です。ごめんなさい、単なる不注意ですが、割と致命的なミスしました。 No.3 のコード中、「TypeName(c.Value) = "String"」→「TypeName(c.Value) <> "String"」と訂正させていただきます。 Function CountTrueBlank(rng As Range) As Long   Dim c As Range, n As Long   For Each c In rng     If c.Value = "" And TypeName(c.Value) <> "String" Then n = n + 1   Next c   CountTrueBlank = n End Function

回答No.3

質問者さんが「空白」と表現されているのは、本当の空白ではなくて、空文字列、空白文字列などと呼ばれている「""」のことですね。 Excel のヘルプの「関数リファレンス(関数参照)」にて COUNTA、COUNTBLANK 関数のページを見ると、次のとおりに書いてあります。 ● COUNTA  「セル範囲に空の文字列を返す数式が含まれている場合、その値を計算の対象とします。空白セルは計算の対象にはなりません。」 ● COUNTBLANK  「空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。」 ここに言う「計算の対象」とは、「それを 1 個と数えて関数の戻り値に加算する対象であるセル」を意味しています。 従ってどちらの関数についても、少しも矛盾はなく、仕様どおりの動作になっています。他の Excel の諸機能と同様に、関数についても、まずはヘルプを確認し、その仕様を理解した上で利用してください。 組み込みの関数について質問者さんにお伝えすべき情報は、以上です。 上の仕様が気に入らない場合は、ご自分で工夫して、ユーザー定義関数を作るなどします。例えば次のコードを標準モジュールに貼り付けると、セルで CountTrueBlank 関数というのが使えます。「""」を除いて、空白セルの個数を数えます。 Function CountTrueBlank(rng As Range) As Long Dim c As Range, n As Long For Each c In rng If c.Value = "" And TypeName(c.Value) = "String" Then n = n + 1 Next c CountTrueBlank = n End Function

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! COUNTA関数とCOUNTBLANK関数の違いですね! >ただし数式の結果によっては、空欄になっているセルがあります。 IF関数等で「""」のセルの扱いについては ↓のサイトに >「未入力セル」と「""」(長さ0の文字列)ではカウントのされ方が違います と載っています。m(_ _)m http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count.htm

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

COUNTA関数は文字列をカウントする関数ですが、数式で返る「""」の場合も空白文字列(文字数0の文字列)として認識しますので、カウント対象になります。 一方、COUNTBLANK関数は、本当の空白セルだけでなく空白文字列の「""」もブランクとして認識する仕様になっていますので、ご質問のような結果となるわけです。 以下COUNTBLANK関数のヘルプより 空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。ただし、数値の 0 を含むセルは計算の対象となりません。

ichigolove
質問者

補足

>空白文字列 ("") を返す数式が入力されているセルも計算の対象となります ということは、すべてのセルに(””)を含む数式が入っているわけですからすべてカウントされるはず。 なのに、見た目が空白じゃないセル(答えが表示されている)はカウントされないのでふしぎなのですが・・・ 頭悪くてすみません。

関連するQ&A