人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MS-Excel2003で、ある数値の列があり、同じ列でその数値の20%増減の範囲内に含まれる数値をカウントしたい場合、どういう方法があるでしょうか?
数値は大量にあり、そのすべての数値について上記のカウントを行うものとします。したがってフィルタの使用は除外します。数式で解決したいです。


●質問者: pyara
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ken3memo
●400ポイント ベストアンサー

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にしてください。)


pyaraさんのコメント
素早い回答に感謝します。動画まで付けていただき感激です! 「はじめに全体をカウントしてから該当の部分を引いていく・・」 これは思いつかなかったです。まさに逆転の発想ですね。 私は最初隣りに2行挿入して「*0.8」と「*1.2」を入れて やろうとしていたのですが、これだと別行を参照せねばならず、 countifではどうしても・・うまくゆかなかったのです。 正直あきらめかけていて(言葉は悪いですが)ダメ元で質問を投稿したのですが やはり人の助けは借りてみるものですね。。 本当に助かりました。 丁寧で親切なご回答ありがとうございました(^^) 今回お二人とも同じロジックを回答いただいたので、 最初に回答いただいたken3memo様に400ポイント配分させていただきました。

2 ● きゃづみぃ
●100ポイント
=COUNT(A:A)-COUNTIF(A:A,">" & A10*1.2)-COUNTIF(A:A,"<" & A10*0.8)

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

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


pyaraさんのコメント
素早いご回答ありがとうございました! ご教示の式でうまく動きました。本当に助かりました。 また何かあったときはお力お借りしたいです。 (今回はお二人とも同じロジックでご回答いただいたので、 先に投稿いただいた上の方に多めに配分させていただきました)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ