• ベストアンサー

EXCELで cuontifやsubtotal以外の関数で0以外の数値をカウントできないでしょうか?

今回は数値のカウントを教えてください。 下記のような場合、A列の1でフィルターをかけた場合 B列の0を除いた整数のセルの個数をカウントするには どのような関数がのぞましいでしょうか?   A  B    1  a  b 2  1  10 3  1  12   4  0   0   5  0   0 6  1  15 7  1   0   8  1   0 ・     ・      ・     ・ 11  1  12 countifだとフィルターが有効にならず、subtotalでは 「0以外」のオプションが有効になりません。 よろしくお願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >実は膨大なデータなので補助列を作らないで >出来ればと思ってます。 ちょっと気になって、前回の私の書き込みを調べてみましたが、 前回 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1578916 EXCELで0を除いた平均値を求めるには? を書いた人ですよね。 前回の、私の回答は試してはいませんね。 SUBTOTAL のユーザー定義関数の VSUM という関数です。 =VSUM(2,B2:B11,TRUE) で、0以外のCOUNT が出るはずですし、平均値なら、 =VSUM(1,B2:B11,TRUE) になります。 でも、もっと簡単なのは、範囲を選択して、置換で、0を抜いてしまえばよいのでは?

XXwaiwaiXX
質問者

お礼

おせわさまです。 ついに出来ました。先日のVBAをなんとかものにしようと勉強しました~(^^ゞ 何事も諦めていては駄目ですね。 今回は本当にお世話になりました。またの機会がありましたら、よろしくです。

XXwaiwaiXX
質問者

補足

Wendy02さん いつも丁寧なご回答をありがとう御座います。 前回の件は申し訳ありませんでした。関数だけで 解決できるかと思いましたが、難しいコードが必要だったようで、どのように活用するのかわからないでいました。 今回の関数も先日のコードが必要なのですね。 勉強します。。。

その他の回答 (3)

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.3

>A列の1でフィルターをかけた場合 さらにB列でオートフィルタオプションで「 0 と等しくない」でフィルターをかけて絞り込んで =SUBTOTAL(2,C2:C11) これで正確にカウントされます。

XXwaiwaiXX
質問者

補足

ありがとうございます。 皆様のご教授は非常に参考になりますが、当方の具体例が悪いので、伝わってないようですね。申し訳ないです。 改めて具体例を挙げてみますのでよろしくお願い致します

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 簡単に考えれば、 C列等に補助列を作って、 C2:~ =IF(B2=0,"",B2) として、 計算で、このようにすればよいのではありませんか?  =SUBTOTAL(2,C2:C11) >例えばA列が不規則な数字の場合は上記の関数ではだめですよね。 A列でフィルタを取って、B列のカウントだから、A列に結果が出ていれば、そのカウントには同じことだと思います。もし違うのでしたら、具体例がないと分らないですね。

XXwaiwaiXX
質問者

補足

ありがとうございます。 実は膨大なデータなので補助列を作らないで 出来ればと思ってます。 実際はA列のみでなくフィルタを掛ける場所が複数あるので困ってます。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.1

こんにちは フィルターにかける、かけないに関わらず =SUMPRODUCT((A2:A11=1)*(B2:B11<>0)) のようにしては如何でしょうか?

XXwaiwaiXX
質問者

補足

ありがとう御座います。 補足として例えばA列が不規則な数字の場合は上記の関数ではだめですよね。 これって別問題でしょうか。

関連するQ&A

  • 関数で可視セルのデータ個数カウント

    Excel2002を使用しています。 オートフィルタで抽出したデータの個数を関数で カウントしたいのですが、可視セルのみをカウント 出来る関数はあるのでしょうか? 例えば   A 1 件数 2  2 3  1 4  3 5  1 6 関数 A6セルに何らかの関数を入れておき、 A列のオートフィルタを使って、1を抽出した時は A6に”2” 3を抽出した時はA6に”1”を表示させたいの です。 このように、可視セルのデータ個数のみを カウントする関数はありますでしょうか? フィルタを使わずにCOUNTIF関数でカウントする 方法、また、可視セルをコピー貼り付け後 カウントする方法は避け、あくまでフィルタで 抽出したデータの個数を瞬時にカウントしたいの です。 ご教授宜しくお願いします。

  • Excel2003 ユーザー定義関数 で SUBTOTALとSUMPRODUCTの複合できますか?(複数条件)

    こんばんは。お願いします。 まず、セルA2、B2にそれぞれフィールド名"あ"、"い"があるとします。 この2列目以下にオートフィルターを使います。 A列のA3,A4…には文字列"a","b","う",または"かき"が入っていて、 B列のB3,B4…には数値(整数)が入っているとします。 このとき、セルB1にVBAで作成した関数を入れたいと思っています。 Excel2003です。 その関数は、以下の条件(1)と(2)を同時に満たします。 (1)A列が"a"または"かき"である場合のみ、その行のB列の数値の合計を計算する(SUMIF関数で可能) (2)オートフィルターを用いて抽出したら、表示されているB列の数値だけの合計を計算する(SUBTOTAL関数で可能) (3)作業列は使えません。 要するに、表示されているセルのうち、条件にあうもののみ計算したい、ということです。 もしこのようなことがワークシート関数でもできるのであれば、それで構いません。 どうぞ、よろしくお願いいたします。

  • 列内の数値の個数をカウントする

    A  B  2 101 3 101 4 101 5 102 6 102 7 103 上記のような状態の時、101、102、103の個数をカウントしたいです。 =COUNTIF($A$2:$A$7,101) でカウントできるかと思うのですが、この関数を下方向にコピーして、102、103も数えたいのですが、関数がわかりません(実際には、101、102、103どころではなく、約1000までの連番について数値をカウントしようとしています) 数値ごとに手作業で、=COUNTIF($A$2:$A$7,101)の101の部分を変えるわけにはいかないので、どうか上手い関数を教えていただきたいです。 よろしくお願いします。

  • エクセルでフィルタ後の条件付き個数のカウント

    いつもお世話になっております。 エクセル(2007)で作成した表をフィルタ後に条件に合致する個数をカウントする方法を教えてください。 (例) A列:名前 B列:出身県のデータがあったとします。 名前でフィルタをかけた後、出身県ごとのカウントを行いたいのですが、条件が無い場合のデータ個数はSUBTOTAL関数を使えばOKなのはわかります。 COUNTIFS関数を使うと、フィルタで隠れた行のデータまでカウントしていまいます。 ピボットを使う(使い方がイマイチわかりませんが・・・)という方法もあると思いますが、今回は同一シート無いに関数でカウントしたいのです。 どなたかよろしくお願いいたします。

  • エクセルの関数について教えてください。

    どの関数を使ったらよいのか教えてください。 1.例えば、1000以上2000以下の数値が入っているセルの個数をカウントしたい。この場合、COUNTIFで式を入れようとしても条件がひとつしか入らないので(">1000"のように)、他のどの関数を使えばいいのでしょうか。 2.ある文字列の中で同じ文字があった場合、その文字とセルの個数をカウントしたい。例えば、ある範囲にA,D,W,D,R,D,A,A,Wとあった場合、A 3,D 3,W 2,R 1というような結果がほしいのですが。 基本的なことで質問して申し訳ないのですが、急いでやらなければならないことがありますのでよろしくお願いします。

  • Excel 関数でcountifの複数条件

    Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。

  • エクセルでフィルター結果をSUBTOTALする

    エクセル2010で、フィルターの結果をSUBTOTAL関数でB1セルに表示したとして、その横のセルA1セルにフィルターした項目を表示させたいのですが。 例えばSUBTOTALした「合計金額」が何の項目かを表示させないと分かりにくいので何か方法があれば教えてください。 フィルターオプション以外の方法でお願いします。

  • エクセルのcountif関数について

    二つの列にそれぞれ数値が入っている場合に、クロスしたデータの個数をカウントしたいのですが、どのような式を使えばよいかお教え下さい。 例えばA1~A10に20,30,20、・・・と規則的に入力されていて、B1~B10に1、2、3、1、2、3、・・・とこちらも規則的に入力されている場合で、A列が20でB列が3の場合、クロスした値は2個となるのですが、それをCOUNTIF関数で計算させたいのですが、...何か良い方法はありませんでしょうか。

  • 数式の数値を除いた数値のカウント

    =COUNTIF(A1:A5,">=0")で0以上の数値のセルをカウントしたいのですが、 途中に小計等の「数式の結果の数値」があり、 その数値も含めてカウントされてしまいます。 数式の結果である数値は除いた、直接入力した数値のみカウントすることはできますか? 例えば、A1~A5セルに表示されている数値が A1:8 A2:-5 A3:空白 A4:3(=SUM(A1:A3)) A5:2 の場合、=COUNTIF(A1:A5,">=0")で「3」となりますが、 A4の数式の結果の数値の3は含めずに、 数値を直接入力した数で>=0である個数の「2」となるようにカウントするにはどうすればよいでしょう? やはり「数式の結果の数値」も「直接入力した数値」も 同一のものとしか判断できないのでしょうか?

  • EXCELでのカウント

    こんんちは!いつも使っている簡単な関数ならわかるのですが... 範囲→1列(A列やB列) 範囲内で指定の文字が入力されているセルの数をカウントしたい(返したい)んです。 例)B列に「2」「23」「50」「13」「12」と入力されているとしたら   「2」を入力しているセルをカウントしたかったら   「3」と出てくるように... COUNTIF関数だと「2」を指定したら「2」と入力したセルだけカウントされますよね。(例えば上記例だと「1」と帰ってくる。これを「2」を含んでいるセルの数をカウントしたいんです。 教えてください。 宜しくお願いいたします。

専門家に質問してみよう