• ベストアンサー

Excelの最小値?

Excel 2002で、A2~A10での「0」を除外した最小値で ・A11セル =MIN(E2:E31)/COUNTIF(E2:E31,">0") では「0」になってしまします。 どこが間違っているのでしょうか? ご教示ください。

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.4

こんばんは A2:A31の範囲でマイナス値が無くかつ0の 次に小さな数値を得る方法 =SMALL(A2:A31,COUNTIF(A2:A31,0)+1) 同条件のセル数は記載された COUNTIF(A2:A31,">0") で得られるはずなので結果 =SMALL(A2:A31,COUNTIF(A2:A31,0)+1)/COUNTIF(A2:A31,">0") で如何でしょうか

noname#211914
質問者

補足

comvさん、回答ありがとうございます。 >=SMALL(A2:A31,COUNTIF(A2:A31,0)+1) これで上手くいきそうですが、arukumunさんの補足に書いたように、小数点以下4桁表示されます・・・? これはどうしてでしょうか? 再度ご教示をお願いします。

その他の回答 (6)

  • comv
  • ベストアンサー率52% (322/612)
回答No.7

こんばんは3 >この小数点以下の桁数は「4」以上大きくしても、 >「4位以降」の「0」が増えるだけですね・・・? >Excelの場合、「5位」で四捨五入してそれ以下は >表示しないようになっているのでしょうか? EXCELの有効桁は15桁です 表示させたデータは単に少数点以下4位で割り切れて いるだけだと思います。 ヘルプに「Excel の仕様および制限」で検索して 項目:計算の仕様 を見てみてください! (ヘルプはEXCEL2002の場合なので他のバージョンでの  検索キーワードは多少違うかもしれません)

noname#211914
質問者

補足

comvさん、たびたびご教示ありがとうございます。 >ヘルプに「Excel の仕様および制限」で検索して 分かりました。 今後ともよろしくお願いします。

  • comv
  • ベストアンサー率52% (322/612)
回答No.6

みなさん こんばんは 再びcomvです! 昼間UPしたと思っていたらUPされていないので たぶん操作間違いだったのかな(--; 最初に >=countif(a1:a10,"=<0") 以下の比較演算子は <= ですから "<=0" で 試してみて下さい >小数点以下4桁表示されます・・・? 不思議過ぎます(^^; 考えられる可能性は 可能性1.A2:A31のデータは表示上は少数点 以下1桁だがそれ以下も存在する(表示形式で桁数 指定しなくてもセル幅が狭いと、G/標準では表示 可能桁で丸められます) 可能性2.数式の入っているセルの表示形式が  G/標準"125"となっている(こちらは可能性極小^^;)

noname#211914
質問者

補足

comvさん、お手数かけます。 >以下の比較演算子は <= ですから "<=0" で そうですね! >数式の入っているセルの表示形式が 分かりました! セルの表示形式は「数値」ですが、このセルには数式が入っており、「小数点以下の桁数」を「1」にしてます。 ⇒この「桁数」を「4」にすると ・25.3125 と表示されますので、この値を選択してきているのですね? ただ又又少し疑問が・・・? この小数点以下の桁数は「4」以上大きくしても、「4位以降」の「0」が増えるだけですね・・・? Excelの場合、「5位」で四捨五入してそれ以下は表示しないようになっているのでしょうか?

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

#2の補足です。既に#4でご回答がでた方法が良いと思います。 A1:A10の数値(ブランク、文字列入り可)で、0以外の最小値を求める。 =SMALL(A1:A10,COUNTIF(A1:A10,"<0")+COUNTIF(A1:A10,0)+1) 0とマイナスの数値の個数を求め、それらを除外して次ぎに小さい値を求めた。 =countif(a1:a10,"=<0")旨く行かないのですが本当だろうか。

noname#211914
質問者

補足

imogasiさん、再度ありがとうございます。 >=SMALL(A1:A10,COUNTIF(A1:A10,"<0")+COUNTIF(A1:A10,0)+1) 確認出来ました。 但し、小数点以下4桁表示の件は同様です・・・? >=countif(a1:a10,"=<0")旨く行かないのですが本当だろうか。 上手くきませんね・・・?

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.3

了解しました。 0.0があるセルがあって、計算が合わないんですね。 とりあえず0.0を入れなければ =MIN(E2:E31)/COUNTIF(E2:E31,">0") でもうまくいくと思いますが。 どうしても入れていないセルを0.0にしたいのであれば、 =MIN(OFFSET(E2,0,0,COUNTIF(E2:E31,">0"),1))/COUNTIF(E2:E31,">0") で合ってますか?

noname#211914
質問者

補足

arukamunさん、再度回答ありがとうございます。 >とりあえず0.0を入れなければ この方法は補足している段階で気が付きました。 少し又疑問が出てきました。 質問を簡単にして、 =MIN(OFFSET(E2,0,0,COUNTIF(E2:E31,">0"),1)) のみでトライしてみると、 データの入力した数値は例えば最小値が25.3なのに ・25.3125 と表示されます。 (勿論、セルの設定で小数点以下1桁表示させれば問題はないのですが!) ⇒OFFSET(E2,0,0,COUNTIF(E2:E31,">0"),1) この意味が理解出来ていないのが原因だと思うのですが・・・・? 再度ご教示ください。

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

結構うるさい問題のようですね。 A列A1:A10に数字があるとして、 5 2 4 2 6 9 10 3 0 6 B1に=IF(A1=0," ",A1)といれ 下に複写する。 5 2 4 2 6 9 10 3 6 となり どこでも良いが、例えばC2に=MIN(B1:B10)と入れると2 となりました。3以上で最小値などもこれで求まりますね。Min関数の()内の引数は、文字列、空白は計算から除外されるとなっています。

noname#211914
質問者

補足

imogasiさん、回答ありがとうございます。 arukamunさんのお礼に記載したように、初歩的な間違いに気がついたのですが、imogasiさんの方法は理解出来ました。 これ以外にコピペせずに、式で一発で表示させることは可能でしょうか? 再度ご教示ください。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

こんばんは E2からE31までにどんな数値が入っているのでしょうか? これが解らないと =MIN(E2:E31)/COUNTIF(E2:E31,">0") の結果が正しいのか間違っているのかが解りません。

noname#211914
質問者

お礼

arukamunさん、失礼しました。 初歩的な勘違いに気がつきました。 ・=MIN(A2:A31) では幾らやっても、補足したような数値では「0」ですね(苦笑!)。 少し質問を変えて、imogasiさんの例で別法はないのでしょうか・・・?

noname#211914
質問者

補足

arukamunさん、少し質問を訂正します。 ・A11セル =MIN(E2:E31)/COUNTIF(E2:E31,">0") ⇒・A32セル =MIN(A2:A31)/COUNTIF(A2:A31,">0") >E2からE31までにどんな数値が入っているのでしょうか? 上記の訂正をすると、A2からA31までの数値は 一日毎にデータ追加していくので、 ・A2~A10:20.0~26.0 ・A11~A31:0.0(0) ここでA11以降は一日毎に「20.0~26.0」の内の値になる。 ⇒勿論、 ・=MIN(E2:E10) 翌日 ・=MIN(E2:E11) ・・・・・ としていけば良いのですが、面倒なので、一括してデータ追加時点で最小値をA32に表示させたいものですから。 ご教示ください。

関連するQ&A