こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル/COUNTIF関数で空白以外のセル数取得は?

エクセル2000のワークシート関数の質問です。
B1~B13には数式が入っており、計算の結果として何らかの文字や数字が表示されたセルと、何も表示されない、つまり=""のセルがあります。
このセル範囲の何かが表示されたセルの個数を取得する関数を探しています。

=COUNTIF(B1:B13,"<>""") としてみましたが全セル数の13が返りました。
やむをえず
=ROWS(B1:B13)-COUNTBLANK(B1:B13) とか
=SUMPRODUCT((LEN(B1:B13)>0)*1) とか
=SUMPRODUCT((B1:B13<>"")*1) として取得しましたが、本来のCOUNTIFでは取得できないのでしょうか?

投稿日時 - 2009-07-10 16:28:22

QNo.5114404

暇なときに回答ください

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

><検索条件>は「何かが表示されている」

=COUNTIF(B1:B13,"=?*")

でできませんか?
説明
?は1文字を表すワイルドカードです。
*と組み合わせることで、最低1文字のセルのカウントということになります。

投稿日時 - 2009-07-10 22:07:03

お礼

お礼が遅くなりすみませんでした。
すごいですね!ばっちりです。
=COUNTIF(B1:B13,"?*") でも同じ意味ですよね?
ありがとうございました。

投稿日時 - 2009-07-13 16:09:00

このQ&Aは役に立ちましたか?

16人が「このQ&Aが役に立った」と投票しています

回答(9)

ANo.9

COUNTIF関数の条件では、『empty以外』かつ『""(長さ0の文字列)以外』をひとつの条件では設定できないという事ではないでしょうか。
つまり何らかの『数値』と長さ1以上の『文字列』を同時に条件設定できない。(?)
・SUMPRODUCT関数や配列数式で1つずつのセルを見て集計するか、
・範囲セル数からBLANK数を引くか、
・『数値』セル個数+長さ1以上の『文字列』セル個数とするか、
だと思われます。
=COUNT(B1:B13)+COUNTIF(B1:B13,"?*")

">*" > の後に*をつけた場合、*は単なる文字扱いで、文字コード比較のため『!"#$%&()』などがカウントされないようです。
文字列についてはmshr1962さんの式が最適じゃないでしょうか。

投稿日時 - 2009-07-11 14:20:04

お礼

何度もご指導ありがとうございました。

投稿日時 - 2009-07-13 16:22:07

ANo.8

=COUNTIF(A:A,"<=ーー")
ただし、全ダッシュ―を3つ以上並べると数えませんので
=COUNTIF(A:A,"<=ーーーーー") にするなどの対応が必要です
参考まで

投稿日時 - 2009-07-11 12:42:16

お礼

ありがとうございます。
=COUNTIF(A:A,"<=ーーーーー")  ですか???!!!
おどろきました。

投稿日時 - 2009-07-13 16:20:44

ANo.7

面白いと言えば面白いお題ですが、COUNTIF関数にそれほど拘らなくても良いんじゃないかと思います。
=ROWS(B1:B13)-COUNTBLANK(B1:B13)
のように目的に応じた関数を使えば良いのでは。

とりあえず
=COUNTIF(B1:B13,"<>""")
これは
=COUNTIF(B1:B13,"<>"&"")
もしくは
=COUNTIF(B1:B13,"<>")
ですね。ただし、emptyセル以外をカウントし、『=""のセル』を含んでしまいます。
逆の
=COUNTIF(B1:B13,"="&"")
=COUNTIF(B1:B13,"=")
これは、emptyセルのみカウントします。
じゃ
=COUNTIF(B1:B13,"")
これは、というとCOUNTBLANKと一緒で、emptyなセルと『=""のセル』をカウントします。
(あと『'』のPrefixのみのセルもカウントします)
#関係ないですけど『=""のセル』のみカウントするという条件は無さそう(?)

なのでCOUNTIF関数だけで
=ROWS(B1:B13)-COUNTBLANK(B1:B13)
これをやろうとすると
=COUNTIF(B1:B13,"<>")+COUNTIF(B1:B13,"=")-COUNTIF(B1:B13,"")
こんなんなってしまうのではないでしょうか。
(COUNTIF関数を使う意味が無くなってしまう?)

投稿日時 - 2009-07-10 23:42:07

お礼

end-uさま、いつもありがとうございます。
「面白いお題」ですか。べつにお題ではなくほんと悩んでいました。
(; ´▽`A``

ご教示ありがとうございます。
文字列のみを対象とする場合は
=COUNTIF(A:A,"?*") を使い、
数値もある場合は
=ROWS(A:A)-COUNTBLANK(A:A) を使うことにします。

投稿日時 - 2009-07-13 16:17:10

ANo.5

COUNTA関数を使うことで空白セル以外のセル数をカウントできるのですが、その場合には空白であっても式が入力されている状態で空白の場合にはカウントされます。
そこで例えばA列で空白以外を数えるのでしたら次のような式になります。
=COUNT(A:A)+COUNTIF(A:A,">*")
ここでCOUNTIF関数では文字の入っているセルの数を数えています。

投稿日時 - 2009-07-10 17:41:16

お礼

ありがとうございます。
出かけておりお礼が遅くなり、失礼致しました。
!"#$%&() 以外の文字はカウントできました。

投稿日時 - 2009-07-13 16:03:07

ANo.4

ヘルプには明記されていませんが、COUNTIFの対象が「指定した範囲に含まれる空白以外のセル」だからだと思います。

この程度の回答しか出来ず申し訳無いです…。

投稿日時 - 2009-07-10 17:11:25

お礼

何度もありがとうございます。
そのまさに「指定した範囲に含まれる空白以外のセル」数を取得したいのですが。
<検索条件>は「何かが表示されている」
なんですけどねえ・・・。

投稿日時 - 2009-07-10 17:25:05

ANo.3

たびたびすみません、COUNTと同じ事がCOUNTIFではできないのかと言うことですよね?

投稿日時 - 2009-07-10 16:48:01

お礼

ありがとうございます。
ワークシート関数でのCOUNTは数値が入力されたセル数を取得するものですよね。わたしが取得したいのは何かが表示されているセル数です。
COUNTIFは=COUNTIF(B1:B13,">1")のようにある条件に合致するセルの数を返すので、空白ではない <>"" という条件を何故指定できないのか不思議なのです。

投稿日時 - 2009-07-10 16:59:59

ANo.2

失礼!
質問の意味を誤解していました

投稿日時 - 2009-07-10 16:40:08

ANo.1

「COUNTBLANKを使う」と言うのでは駄目ですか?

投稿日時 - 2009-07-10 16:37:01

あなたにオススメの質問