- ベストアンサー
エクセル/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では取得できないのでしょうか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
><検索条件>は「何かが表示されている」 =COUNTIF(B1:B13,"=?*") でできませんか? 説明 ?は1文字を表すワイルドカードです。 *と組み合わせることで、最低1文字のセルのカウントということになります。
その他の回答 (8)
- end-u
- ベストアンサー率79% (496/625)
COUNTIF関数の条件では、『empty以外』かつ『""(長さ0の文字列)以外』をひとつの条件では設定できないという事ではないでしょうか。 つまり何らかの『数値』と長さ1以上の『文字列』を同時に条件設定できない。(?) ・SUMPRODUCT関数や配列数式で1つずつのセルを見て集計するか、 ・範囲セル数からBLANK数を引くか、 ・『数値』セル個数+長さ1以上の『文字列』セル個数とするか、 だと思われます。 =COUNT(B1:B13)+COUNTIF(B1:B13,"?*") ">*" > の後に*をつけた場合、*は単なる文字扱いで、文字コード比較のため『!"#$%&()』などがカウントされないようです。 文字列についてはmshr1962さんの式が最適じゃないでしょうか。
お礼
何度もご指導ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
=COUNTIF(A:A,"<=ーー") ただし、全ダッシュ―を3つ以上並べると数えませんので =COUNTIF(A:A,"<=ーーーーー") にするなどの対応が必要です 参考まで
お礼
ありがとうございます。 =COUNTIF(A:A,"<=ーーーーー") ですか???!!! おどろきました。
- end-u
- ベストアンサー率79% (496/625)
面白いと言えば面白いお題ですが、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関数を使う意味が無くなってしまう?)
お礼
end-uさま、いつもありがとうございます。 「面白いお題」ですか。べつにお題ではなくほんと悩んでいました。 (; ´▽`A`` ご教示ありがとうございます。 文字列のみを対象とする場合は =COUNTIF(A:A,"?*") を使い、 数値もある場合は =ROWS(A:A)-COUNTBLANK(A:A) を使うことにします。
- KURUMITO
- ベストアンサー率42% (1835/4283)
COUNTA関数を使うことで空白セル以外のセル数をカウントできるのですが、その場合には空白であっても式が入力されている状態で空白の場合にはカウントされます。 そこで例えばA列で空白以外を数えるのでしたら次のような式になります。 =COUNT(A:A)+COUNTIF(A:A,">*") ここでCOUNTIF関数では文字の入っているセルの数を数えています。
お礼
ありがとうございます。 出かけておりお礼が遅くなり、失礼致しました。 !"#$%&() 以外の文字はカウントできました。
- mt2008
- ベストアンサー率52% (885/1701)
- mt2008
- ベストアンサー率52% (885/1701)
たびたびすみません、COUNTと同じ事がCOUNTIFではできないのかと言うことですよね?
お礼
ありがとうございます。 ワークシート関数でのCOUNTは数値が入力されたセル数を取得するものですよね。わたしが取得したいのは何かが表示されているセル数です。 COUNTIFは=COUNTIF(B1:B13,">1")のようにある条件に合致するセルの数を返すので、空白ではない <>"" という条件を何故指定できないのか不思議なのです。
- mt2008
- ベストアンサー率52% (885/1701)
失礼! 質問の意味を誤解していました
- mt2008
- ベストアンサー率52% (885/1701)
「COUNTBLANKを使う」と言うのでは駄目ですか?
お礼
お礼が遅くなりすみませんでした。 すごいですね!ばっちりです。 =COUNTIF(B1:B13,"?*") でも同じ意味ですよね? ありがとうございました。