• ベストアンサー

EXCELで~以上、~未満の値をカウントしたい。

宜しくお願い致します。 A列(1行目~20行目まで)に-80%、-79%・・・79%、80% と、%の値が入っています。そこで、「-60%以上、-70%以下」の値が何個あるかカウントしたいのです。 色々調べてみた結果、 =SUM(IF(A1:A20<=-0.7,IF(A1:A20>=-0.6,1,0))) というように、条件を満たしてたら1の値を返して カウント、としたのですが上手くいきません。 詳しい方、アドバイス宜しくお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

>Ctrl+Shift+EnterとEnterとは何か違うのでしょうか?(すみません) 配列数式と言うものが始めてなんでしょう。 (事前知識) A1に12、A2に9と入れます。 B1に=A1>10といれ、B2に複写します。この表現は、はじめてではないですか。 C1に=B1*1といれて、B2に複写します。 C1は1、C2は0になります。(ここが大切、真であれば1、偽であれば0と言う値となります。) (配列数式) =SUM((A1:A20>=-0.7)*(A1:A20<=-0.6)) のように、A1:A20のように複数行の複数セルを指定していることが特徴です。そして1行一行演算(比較も含む)した結果をたすと言う処理をします。 (A1>=-0.7)*(A1<=-0.6) (A2>=-0.7)*(A2<=-0.6) (A3>=-0.7)*(A3<=-0.6) ・・・ (A19>=-0.7)*(A19<=-0.6) (A20>=-0.7)*(A20<=-0.6) の和(Sum)のように処理されます。 上記()内は事前知識で説明したように、TRUEかFALSEどちらかになって、1か0の値をとります。それらを掛ける結果両方が真の場合のみ1となります。 0x0=0、0x1=0、1x0=0、1x1=1 それら1の行と0の行を加える(Sum)と1の行数が算出されます。それは条件該当件数になります。 条件が3つとかでも同じように考えて利用できます。

nekocya
質問者

お礼

お返事ありがとうございました。私には難しい・・ですけど分かるまで参考にさせていただきます!

その他の回答 (6)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.7

負の値の場合「-70%以上、-60%以下」ですよね。 =COUNTIF(A1:A20,"<=-0.6")-COUNTIF(A1:A20,"<-0.7") 又は =SUMPRODUCT((A1:A20>=-0.7)*(A1:A20<=-0.6)) でできます。 上の方の式は%表示されるので書式を変更してください。

  • taocat
  • ベストアンサー率61% (191/310)
回答No.5

  質問の式はNO.3の方の指摘のとおり数学的にも誤りです。 たぶん、プラスマイナスの勘違いでせう。  -70%以上 AND -60%以下で説明します。 =SUM(IF(A1:A20>=-0.7,IF(A1:A20<=-0.6,1,0))) =SUM((A1:A20>=-0.7)*(A1:A20<=-0.6)) 上2つのようにSUM関数を使う場合は 配列数式にしないといけません。 ご存知だとは思いますが、式確定の時、 Enterではなくて、Ctrl+Shift+Enter で確定です。 また複数条件のカウント等で一番簡単な方法は 次のSUMPRODUCT関数です。 =SUMPRODUCT((A1:A20>=-0.7)*(A1:A20<=-0.6)) この式の確定は普通のとおり、Enter。 結論:複数条件の時は、SUMPRODUCT関数を使う。    

nekocya
質問者

補足

お返事ありがとうございます。 Ctrl+Shift+EnterとEnterとは何か 違うのでしょうか?(すみません)

  • terakura
  • ベストアンサー率20% (4/20)
回答No.4

=COUNTIF(A1:A20,">=-0.6")+COUNTIF(A1:A20,"<=-0.7")でできると思いますが 関数でなくてもオートフィルタのオプションでもできると思います。 計算結果を残したいのかどうかで処理は変わると思いますが・・・。

noname#8027
noname#8027
回答No.3

別件で・・・。 >「-60%以上、-70%以下」 数学的に、両者を共に満たすものはありませんが・・・。 「-70%以上、-60%以下」あるいは、「-60%以上 または -70%以下」 だと思います。 =countif(A1:A20,">= -0.7")-countif(A1:A20,"> -0.6") あるいは、 =countif(A1:A20,">= -0.6")+countif(A1:A20,"<= -0.7") となります。

nekocya
質問者

お礼

お返事ありがとうございました。 おっしゃるとおり、「-60%以上 または -70%以下」 でした・・・。助かりました。

回答No.2

条件付カウントの関数がありますが、使いにくいです。 =countif(A1:A20,">= 0.6")-countif(A1:A20,"> 0.7") 0.6以上の個数から0.7を超える個数を引いて、0.6以上かつ0.7以下を求めています。

nekocya
質問者

お礼

お返事ありがとうございます。なるほどでした。 助かりました。

  • 00PS
  • ベストアンサー率28% (4/14)
回答No.1

A1からA20まで入っているとしてB1を =IF(AND(A1>=-0.7,A1<=-0.6),1,0) にしてB1をB2~20コピーし =SUM(B1:B20) では駄目ですか?

nekocya
質問者

お礼

お返事ありがとうございます。 できればいっぺんにすませてしまいたいという感じです。