- ベストアンサー
COUNTBLANK関数について
A1からA16まで数式が入っています。 ただし数式の結果によっては、空欄になっているセルがあります。 COUNTA関数を使ってA1からA16までのデーターが入っている個数を調べた場合、空白のセルにも数式が入っているためカウントされますよね。 では、COUNTBLANK関数を使ってA1からA16までの空白の個数を調べた場合どうなりますか? 実際には空白のセルにも式が入っているのだから、0にならないとおかしくないですか? 実際の結果は空白の個数をちゃんとカウントできます。 なぜでしょうか? 矛盾していると思うのですが・・・
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>見た目が空白じゃないセル(答えが表示されている)はカウントされないのでふしぎなのですが・・・ COUNTBLANK関数では、数式の結果が表示される場合は、ブランク以外ですので、もちろんカウント対象になりません。 ただし、数式で空白文字列を返す場合は(数式の結果が重要)、未入力セルと同様にカウント対象になるということです。
その他の回答 (4)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
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
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
質問者さんが「空白」と表現されているのは、本当の空白ではなくて、空文字列、空白文字列などと呼ばれている「""」のことですね。 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)
こんばんは! COUNTA関数とCOUNTBLANK関数の違いですね! >ただし数式の結果によっては、空欄になっているセルがあります。 IF関数等で「""」のセルの扱いについては ↓のサイトに >「未入力セル」と「""」(長さ0の文字列)ではカウントのされ方が違います と載っています。m(_ _)m http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count.htm
- MackyNo1
- ベストアンサー率53% (1521/2850)
COUNTA関数は文字列をカウントする関数ですが、数式で返る「""」の場合も空白文字列(文字数0の文字列)として認識しますので、カウント対象になります。 一方、COUNTBLANK関数は、本当の空白セルだけでなく空白文字列の「""」もブランクとして認識する仕様になっていますので、ご質問のような結果となるわけです。 以下COUNTBLANK関数のヘルプより 空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。ただし、数値の 0 を含むセルは計算の対象となりません。
補足
>空白文字列 ("") を返す数式が入力されているセルも計算の対象となります ということは、すべてのセルに(””)を含む数式が入っているわけですからすべてカウントされるはず。 なのに、見た目が空白じゃないセル(答えが表示されている)はカウントされないのでふしぎなのですが・・・ 頭悪くてすみません。