=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」となるようにカウントするにはどうすればよいでしょう?
やはり「数式の結果の数値」も「直接入力した数値」も
同一のものとしか判断できないのでしょうか?
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を使うことはやぶさかではありませんが、数式でできることを考えてみました。
この回答への補足
おー、これ非常に惜しいです!!!
最初の質問欄に明記しなかったのですが、数式でできるのが第一希望です。
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関数で引き算ができれば、と思いました。
うーん、やはり数式ではちょっと無理なのでしょうか。
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
No.2
- 回答日時:
こんばんは。
このようにすればよいと思います。
=SUMPRODUCT(SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-1,0))*(A1:A5>=0))
ただし、ROW(A1:A5) の引数は、どこでも、A1から始まります。横の場合は、COLUMN(A1:E1)と数えます。
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
のようなのを標準モジュールに作成します。
早速の回答ありがとうございます。
質問欄に明記しなかったのですが、数式でできるのが第一希望ですので
もうちょっと数式しらべてみます。
実はユーザー定義関数や標準モジュール等やったことがなく、
できれば数式で、という状態です。
しかし、いつかはマクロやVBAもできるようにならなければと思っていたので、
BLUEPIXYさんのアドバイスを参考に、勉強してみます。
No5でのアドバイスも参考にします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) xlDownの使い分けについての質問です vbaでxlDownを使って一覧近い空白までのセルをコピー 3 2022/08/04 12:20
- Excel(エクセル) Excelのマクロについて 2 2022/06/14 03:38
- Excel(エクセル) エクセルの昇順での数値入力のミスの見つけ方を教えてください。 4 2022/06/26 20:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで行の一番上にセルに...
-
エクセルでエンターを押すと隣...
-
文字列を含む連続データの入力
-
名簿の漢字名を関数で半角カナ...
-
エクセルで既存数値を税抜きに...
-
エクセルで空白に自動で文字を...
-
エクセルで休日の「休」という...
-
【エクセル】入力規則のプルダ...
-
横方向にドラッグした式を縦方...
-
エクセル : 指定位置へジャン...
-
EXCEL 連動したドロップダウン...
-
Excelでセルを次の行の先頭の列...
-
空白部分に連番の数字を記入し...
-
エクセルのオートフィル機能で...
-
エクセルで、複数の同一内容の...
-
オートフィルを列すべて(一番...
-
エクセルで、他の複数のセルに...
-
エクセル:スペースの削除(連続...
-
Excelのテーブル上のセルの保護...
-
エクセル 1行飛ばしで番号をつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのテーブル上のセルの保護...
-
名簿の漢字名を関数で半角カナ...
-
EXCEL 連動したドロップダウン...
-
EXCELで縦の行全てに一括して文...
-
【エクセル】入力規則のプルダ...
-
エクセルで決められた合計にな...
-
エクセルで行の一番上にセルに...
-
エクセルで空白に自動で文字を...
-
エクセルでエンターを押すと隣...
-
EXCELのNOW()関数の...
-
エクセルのオートフィル機能で...
-
空白部分に連番の数字を記入し...
-
エクセルで休日の「休」という...
-
オートフィルを列すべて(一番...
-
Excelでセルを次の行の先頭の列...
-
エクセル・・色の着いたセルの...
-
Excelで相対度数を求めたいので...
-
指定した行に飛ぶ事って可能で...
-
エクセルで年を1年ずつ増やすや...
-
エクセルの数式を等間隔にオー...
おすすめ情報