• ベストアンサー

エクセル/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では取得できないのでしょうか?

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.6

><検索条件>は「何かが表示されている」 =COUNTIF(B1:B13,"=?*") でできませんか? 説明 ?は1文字を表すワイルドカードです。 *と組み合わせることで、最低1文字のセルのカウントということになります。

merlionXX
質問者

お礼

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

その他の回答 (8)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.9

COUNTIF関数の条件では、『empty以外』かつ『""(長さ0の文字列)以外』をひとつの条件では設定できないという事ではないでしょうか。 つまり何らかの『数値』と長さ1以上の『文字列』を同時に条件設定できない。(?) ・SUMPRODUCT関数や配列数式で1つずつのセルを見て集計するか、 ・範囲セル数からBLANK数を引くか、 ・『数値』セル個数+長さ1以上の『文字列』セル個数とするか、 だと思われます。 =COUNT(B1:B13)+COUNTIF(B1:B13,"?*") ">*" > の後に*をつけた場合、*は単なる文字扱いで、文字コード比較のため『!"#$%&()』などがカウントされないようです。 文字列についてはmshr1962さんの式が最適じゃないでしょうか。

merlionXX
質問者

お礼

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

回答No.8

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

merlionXX
質問者

お礼

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

  • end-u
  • ベストアンサー率79% (496/625)
回答No.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関数を使う意味が無くなってしまう?)

merlionXX
質問者

お礼

end-uさま、いつもありがとうございます。 「面白いお題」ですか。べつにお題ではなくほんと悩んでいました。 (; ´▽`A`` ご教示ありがとうございます。 文字列のみを対象とする場合は =COUNTIF(A:A,"?*") を使い、 数値もある場合は =ROWS(A:A)-COUNTBLANK(A:A) を使うことにします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

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

merlionXX
質問者

お礼

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

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

ヘルプには明記されていませんが、COUNTIFの対象が「指定した範囲に含まれる空白以外のセル」だからだと思います。 この程度の回答しか出来ず申し訳無いです…。

merlionXX
質問者

お礼

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

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

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

merlionXX
質問者

お礼

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

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

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

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

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

関連するQ&A

専門家に質問してみよう