MS-Excel2003で、ある数値の列があり、同じ列でその数値の20%増減の範囲内に含まれる数値をカウントしたい場合、どういう方法があるでしょうか?

数値は大量にあり、そのすべての数値について上記のカウントを行うものとします。したがってフィルタの使用は除外します。数式で解決したいです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/05 02:03:24
  • 終了:2012/03/05 20:50:38

ベストアンサー

id:ken3memo No.1

ken3memo回答回数242ベストアンサー獲得回数742012/03/05 05:12:26

ポイント400pt

Count関数で列全体のデータ数をカウントする

=COUNT(C:C)

D
Youtubeで直接見る

次に、CountIF関数で、範囲外のデータをカウントする

全体―(範囲外0.8<の個数)-(範囲外1.2>の個数)=範囲内の数 と なる?
※自分自身を―1したり、調整する?

C列のC10の+-20%の数を求めるには、

=COUNT(C:C)-COUNTIF(C:C,"<"&C10*0.8)-COUNTIF(C:C,">"&C10*1.2)

自分自身が範囲に入ってしまうので、

=COUNT(C:C)-COUNTIF(C:C,"<"&C10*0.8)-COUNTIF(C:C,">"&C10*1.2)-1

かなぁ?
D
Youtubeで直接見る

複数条件の SUMPRODUCT を 使う

あまり使ったことが無いので、自信がないけど、

=SUMPRODUCT((C:C>=C10*0.8)*(C:C<=C10*1.2))

とか?
あっ、これも自分自身を引いたほうがいい場合は、

=SUMPRODUCT((C:C>=C10*0.8)*(C:C<=C10*1.2))-1 か?

D
Youtubeで直接見る

テストしたのがExcel2007なので、もし2003で使えなかったらすみません。
何かの参考となれば幸いです。
※質問を勘違いしているような気もしつつ、回答に入れてみます。(高額ポイントなので間違っていたら遠慮なく0にしてください。)

id:pyara

素早い回答に感謝します。動画まで付けていただき感激です!
「はじめに全体をカウントしてから該当の部分を引いていく・・」
これは思いつかなかったです。まさに逆転の発想ですね。

私は最初隣りに2行挿入して「*0.8」と「*1.2」を入れて
やろうとしていたのですが、これだと別行を参照せねばならず、
countifではどうしても・・うまくゆかなかったのです。

正直あきらめかけていて(言葉は悪いですが)ダメ元で質問を投稿したのですが
やはり人の助けは借りてみるものですね。。
本当に助かりました。
丁寧で親切なご回答ありがとうございました(^^)

今回お二人とも同じロジックを回答いただいたので、
最初に回答いただいたken3memo様に400ポイント配分させていただきました。

2012/03/05 20:41:13

その他の回答(1件)

id:ken3memo No.1

ken3memo回答回数242ベストアンサー獲得回数742012/03/05 05:12:26ここでベストアンサー

ポイント400pt

Count関数で列全体のデータ数をカウントする

=COUNT(C:C)

D
Youtubeで直接見る

次に、CountIF関数で、範囲外のデータをカウントする

全体―(範囲外0.8<の個数)-(範囲外1.2>の個数)=範囲内の数 と なる?
※自分自身を―1したり、調整する?

C列のC10の+-20%の数を求めるには、

=COUNT(C:C)-COUNTIF(C:C,"<"&C10*0.8)-COUNTIF(C:C,">"&C10*1.2)

自分自身が範囲に入ってしまうので、

=COUNT(C:C)-COUNTIF(C:C,"<"&C10*0.8)-COUNTIF(C:C,">"&C10*1.2)-1

かなぁ?
D
Youtubeで直接見る

複数条件の SUMPRODUCT を 使う

あまり使ったことが無いので、自信がないけど、

=SUMPRODUCT((C:C>=C10*0.8)*(C:C<=C10*1.2))

とか?
あっ、これも自分自身を引いたほうがいい場合は、

=SUMPRODUCT((C:C>=C10*0.8)*(C:C<=C10*1.2))-1 か?

D
Youtubeで直接見る

テストしたのがExcel2007なので、もし2003で使えなかったらすみません。
何かの参考となれば幸いです。
※質問を勘違いしているような気もしつつ、回答に入れてみます。(高額ポイントなので間違っていたら遠慮なく0にしてください。)

id:pyara

素早い回答に感謝します。動画まで付けていただき感激です!
「はじめに全体をカウントしてから該当の部分を引いていく・・」
これは思いつかなかったです。まさに逆転の発想ですね。

私は最初隣りに2行挿入して「*0.8」と「*1.2」を入れて
やろうとしていたのですが、これだと別行を参照せねばならず、
countifではどうしても・・うまくゆかなかったのです。

正直あきらめかけていて(言葉は悪いですが)ダメ元で質問を投稿したのですが
やはり人の助けは借りてみるものですね。。
本当に助かりました。
丁寧で親切なご回答ありがとうございました(^^)

今回お二人とも同じロジックを回答いただいたので、
最初に回答いただいたken3memo様に400ポイント配分させていただきました。

2012/03/05 20:41:13
id:taknt No.2

きゃづみぃ回答回数13537ベストアンサー獲得回数11982012/03/05 06:40:24

ポイント100pt
=COUNT(A:A)-COUNTIF(A:A,">" & A10*1.2)-COUNTIF(A:A,"<" & A10*0.8)

これで 大丈夫です。Excel 2003で 確認しました。

範囲は A:Aの箇所を変更。
調べたい数値は A10の箇所を変更してください。

id:pyara

素早いご回答ありがとうございました!
ご教示の式でうまく動きました。本当に助かりました。
また何かあったときはお力お借りしたいです。

(今回はお二人とも同じロジックでご回答いただいたので、
先に投稿いただいた上の方に多めに配分させていただきました)

2012/03/05 20:45:48

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません