• ベストアンサー

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

=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」となるようにカウントするにはどうすればよいでしょう? やはり「数式の結果の数値」も「直接入力した数値」も 同一のものとしか判断できないのでしょうか?

  • ryu55
  • お礼率62% (5/8)

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

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

#2です。 書き忘れていましたが、以下の式は、 =SUMPRODUCT(SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-1,0))*(A1:A5>=0)) A4:3(=SUM(A1:A3)) ではなく、 ここも、 =SUBTOTAL(9,A1:A3) を使用します。式の中でカウントされないようにするには、SUBTOTAL関数を使用します。別に、VBAを使うことはやぶさかではありませんが、数式でできることを考えてみました。

ryu55
質問者

補足

おー、これ非常に惜しいです!!! 最初の質問欄に明記しなかったのですが、数式でできるのが第一希望です。 1. ROW(A1:A5) の引数が、A3とかA4とか列の途中から始められること 2. =SUBTOTAL(9,A1:A3) の関数で合計だけでなく、引き算ができること この2点が満たせれば解決します。 SUBTOTAL関数、初めて知りましたが非常に便利そうですね。 調べてみたら、カッコ内の最初の数字の集計方法は1~11まであるようですが、 「引き算」はないようですね。 質問に A4:3(=SUM(A1:A3))と書きましたが、 =SUM(A1:A3)が=(B2-A1)等の引き算(他列を含む)の場合もあるので、 SUBTOTAL関数で引き算ができれば、と思いました。 うーん、やはり数式ではちょっと無理なのでしょうか。

その他の回答 (4)

  • NNAQ
  • ベストアンサー率56% (104/184)
回答No.5

> =(B2-A1)等の引き算 =SUBTOTAL(9,B2)-A1 で大丈夫みたいですよ。 #2の式を応用できなければ、空いてる列(仮にC列)に C1=IF(SUBTOTAL(2,A1),A1,"") として、 =COUNTIF(C1:C5,">=0") で、カウントすれば良いと思います。

ryu55
質問者

お礼

これで引き算できました!! ありがとうございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#1でCOUNTIFのように条件をつけられるように修正してみました。 使い方: 条件を付けない時 =countConstNum(A1:A5) 条件を付ける時 =countConstNum(A1:A5,">=0") ---------------------------------------------------------------- Public Function countConstNum(r As Range, Optional cond As String = "") Dim c Dim x As Range c = 0 For Each x In r If IsNumeric(x.Formula) Then If cond = "" Then c = c + 1 ElseIf Application.Evaluate(x.Value & cond) Then c = c + 1 End If End If Next countConstNum = c End Function

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

こんばんは。 このようにすればよいと思います。 =SUMPRODUCT(SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-1,0))*(A1:A5>=0)) ただし、ROW(A1:A5) の引数は、どこでも、A1から始まります。横の場合は、COLUMN(A1:E1)と数えます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

件数を求めるだけだったら、 調べる範囲を選択してから メニューの編集~ジャンプ~セル選択 定数で数値 を選んで実行すると、定数として入力されているセルが選択されます。 この時、ステータスバーで「データの個数」を選べば件数がわかります。 式としてカウントしたい場合は ユーザー定義関数として Public Function countConstNum(r As Range) Dim c Dim x As Range c = 0 For Each x In r If IsNumeric(x.Formula) Then c = c + 1 Next countConstNum = c End Function のようなのを標準モジュールに作成します。

ryu55
質問者

お礼

早速の回答ありがとうございます。 質問欄に明記しなかったのですが、数式でできるのが第一希望ですので もうちょっと数式しらべてみます。 実はユーザー定義関数や標準モジュール等やったことがなく、 できれば数式で、という状態です。 しかし、いつかはマクロやVBAもできるようにならなければと思っていたので、 BLUEPIXYさんのアドバイスを参考に、勉強してみます。 No5でのアドバイスも参考にします。 ありがとうございました。

関連するQ&A

  • 数式の結果である数値のみカウント・合計

    =COUNTIF(A3:A9,">=0")で「0以上の、数式の結果である数値」のセル数のカウントと、 「数式の結果である数値」のセルのみ合計計算したいのですが、 「直接入力した数値」はカウント(計算)せずに、 「数式の結果である数値」のみカウント(計算)することはできますか? 例えば、A3~A9セルに表示されている数値が A3:5 A4:3 A5:8(=SUM(A3:A4)) A6:2 A7:空白 A8:4 A9:-2(=A6-A8) の場合、=COUNTIF(A3:A9,">=0")で「5」となりますが、 数式の結果の数値で>=0である個数の「1」(A5が該当)となるようにカウントするにはどうすればよいでしょう? また、0以上の条件部分が「0未満」、「条件なし」の場合も可能でしょうか? そして、=SUM(A3:A9)だと「20」となりますが、 「数式の結果である数値」のみ合計計算して「6」(A5とA9の合計)を結果として表示させることはできますか? できれば数式での解決が第一希望です。 以前、全く逆の、「数式の結果である数値を除いた、直接入力した数値のみカウント」する方法を質問し、 おかげさまで、数式をSUBTOTAL関数で小計等を避けて集計することで無事解決したのですが、 今度は小計等の数式の結果の数値のみをカウントするという、逆のパターンが必要になってしまいました。

  • エクセルのカウントについての質問です。

    エクセルのカウントについての質問です。 例えば B1に入っている数式の結果の数値と一緒になる 数値をC10~C60のセルからカウントしたい場合 どの様な式を立てれば良いか教えて頂けますでしょうか? B1のセルには=10*3の"30"が入力してあり COUNTIF(C10:C60,"30")と入力すればカウントできるのですが COUNTIF(C10:C60,"B1")ではカウントできません ""の中にB1などセルを指定してカウントはできませんでしょうか? また セルをドラッグして””の中のセルを次のように B2、B3、B4...といったように変化をの数式の結果をカウント する方法はありますでしょうか? 宜しくお願いします。

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

    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の部分を変えるわけにはいかないので、どうか上手い関数を教えていただきたいです。 よろしくお願いします。

  • 数値のカウントがうまくいきません

    A |B | C 12 |10| 上記のようなセルからA、B、Cのセルから数値だけをカウントしたいのですが counta(A1:B1)とすると空白もカウントされてしまう場合がありうまくカウントできません。 count(A1:B1)も試しましたが数値と認識される場合とそうでない場合とまちまちでこれもうまくいきません。 これを回避する良い方法はありますか?

  • COUNTBLANK関数について

    A1からA16まで数式が入っています。 ただし数式の結果によっては、空欄になっているセルがあります。 COUNTA関数を使ってA1からA16までのデーターが入っている個数を調べた場合、空白のセルにも数式が入っているためカウントされますよね。 では、COUNTBLANK関数を使ってA1からA16までの空白の個数を調べた場合どうなりますか? 実際には空白のセルにも式が入っているのだから、0にならないとおかしくないですか? 実際の結果は空白の個数をちゃんとカウントできます。 なぜでしょうか? 矛盾していると思うのですが・・・

  • Excelの数式

    各ページの小計の合計を出すために、別ページにセルの位置を指定して表示させ、sumにて計算しました。 その後、小計がいくつか変更になったところがあったのですが、なぜか合計に反映されません。 不思議に思ってみてみると、なぜかsumで計算した場所が数式ではなく数値で入力されていたため、変更が反映されなかったようです。 これはどういったことが原因として考えられますか?

  • Excel2002において、数式と数値を別に数えたいのですが。

    Excelで表を作っています。 表の最後の列にそれぞれ、その列の合計が入っていますが、基本的にそれは数式による計算結果です。 ですが、時々直接数値を入力したセルがあります。 1.数式による計算結果のセルが30個 2.そうでない数値のセルが10個 のとき、 1.30 2.10 というふうに数えたいのです。 できれば関数がいいのですが…(VBAは手に余るので) できるかできないかだけでもいいので、どうかお答えください。

  • 1つの数式で結果を出すには

    A列に整数と小数のある数値がランダムに各セルに入っています。 この数字を下記の数式を他のセルに組んで、1や2や3がA列に入っている数値を確認して数式を組んでいる列のセルに1が表示する様にしています。 =SUMPRODUCT(COUNTIF(A3:A3,"1")) =SUMPRODUCT(COUNTIF(A3:A3,"2")) =SUMPRODUCT(COUNTIF(A3:A3,"3")) この数式を改良して、1つの式で、1や2や3が存在していたら、式を組んだセルに1が表示出来るか、下記の様に数式を組みましたが、結果が得られませんでした。 =SUMPRODUCT(COUNTIF(A3:A3,"1,2,3")) ご教授頂けたら幸いです。 宜しくお願いします。

  • エクセルCOUNT関数について

    こんばんは、COUNT関数についてお伺いします。 たとえばA列に関数(SUMなど)の数式が入っています。そのA列を範囲指定してCOUNT関数をしたところ、数値が現れているセルのみをカウントしたいのですが、空白の数式が入っているセルもカウントしてしまいます。数値を示しているセルのみをカウントしたいのですが、うまく行きません。 どうすれば解決できますか、教えていただけないでしょうか。

  • エクセルの数式で、COUNTIF(A1:A100,">""") 

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2224824 の関連質問です。 表A1:A100にある、各セル内の数式で求められた計算結果が文字列の場合、その数を調べるには、 =COUNTIF(A1:A100,">""") で、各セルの計算式の答えが "" 以外の文字列の数を返してくれるようです。(数値や空白セルはカウントされません。) 非常に便利なのですが、ちょっと腑に落ちないのは、  >""  って、""より大きいということですよね? しかし文字列は数字とちがい大小はないのではないでしょうか? もう一点疑問です。 ためしに、=COUNTIF(A1:A100,">=""")  としてみました。 今度は、  >=""  ですから、""も含むということになるはずですよね? ところが答えが  ""  となるものをカウントしません。 不思議でたまりません。 よろしくお願いします。

専門家に質問してみよう