重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

A1からA16まで数式が入っています。
ただし数式の結果によっては、空欄になっているセルがあります。

COUNTA関数を使ってA1からA16までのデーターが入っている個数を調べた場合、空白のセルにも数式が入っているためカウントされますよね。

では、COUNTBLANK関数を使ってA1からA16までの空白の個数を調べた場合どうなりますか?

実際には空白のセルにも式が入っているのだから、0にならないとおかしくないですか?

実際の結果は空白の個数をちゃんとカウントできます。

なぜでしょうか?
矛盾していると思うのですが・・・

A 回答 (5件)

>見た目が空白じゃないセル(答えが表示されている)はカウントされないのでふしぎなのですが・・・



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

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
    • good
    • 0

質問者さんが「空白」と表現されているのは、本当の空白ではなくて、空文字列、空白文字列などと呼ばれている「""」のことですね。




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
    • good
    • 0

こんばんは!



COUNTA関数とCOUNTBLANK関数の違いですね!

>ただし数式の結果によっては、空欄になっているセルがあります。
IF関数等で「""」のセルの扱いについては

↓のサイトに
>「未入力セル」と「""」(長さ0の文字列)ではカウントのされ方が違います

と載っています。m(_ _)m

http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …
    • good
    • 0

COUNTA関数は文字列をカウントする関数ですが、数式で返る「""」の場合も空白文字列(文字数0の文字列)として認識しますので、カウント対象になります。



一方、COUNTBLANK関数は、本当の空白セルだけでなく空白文字列の「""」もブランクとして認識する仕様になっていますので、ご質問のような結果となるわけです。

以下COUNTBLANK関数のヘルプより

空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。ただし、数値の 0 を含むセルは計算の対象となりません。

この回答への補足

>空白文字列 ("") を返す数式が入力されているセルも計算の対象となります
ということは、すべてのセルに(””)を含む数式が入っているわけですからすべてカウントされるはず。

なのに、見た目が空白じゃないセル(答えが表示されている)はカウントされないのでふしぎなのですが・・・

頭悪くてすみません。

補足日時:2014/01/29 22:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!