• ベストアンサー

エクセル 最小値を求める関数について

複数シートの集計で串刺し集計を使っています。 最大値は =MAX('1:31'!G57) で求められるのですが、0以上の最小値を求める関数(SMALL,またはMIN)を使ってもうまくいきません。 0以上の最小値を求める関数を教えてください。よろしくお願いします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

◆こんな方法はいかがでしょう =SMALL('1:31'!G57,SUMPRODUCT(COUNTIF(INDIRECT(ROW(1:31)&"!G57"),"<=0"))+1)

jyunmai
質問者

お礼

最小値を求めることが出来ました。 エクセル勉強していきたいと思います。 ありがとうございました。

その他の回答 (5)

  • banzaiA
  • ベストアンサー率16% (100/595)
回答No.6

次の解釈でよろしいですか? 例えば 10、50,0,150、200 のような数値があって、 >0以上の最小値を求める というのは、 10 を返したい(0は無視する)。 それなら単純にminと smallを組み合わせて =IF(MIN('1:31'!G57)=0,SMALL('1:31'!G57,2),MIN('1:31'!G57)) ではダメですか?

jyunmai
質問者

お礼

回答ありがとうございます。 教えていただいた関数では最小値が表示されませんでした。 セルの設定がおかしかったのでしょうか・・・。 私にも理解できる関数で是非使いたかったのですが・・。 まだまだエクセル初心者なのでまたお世話にあるかもしれません。その時もよろしくお願いします。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.5

=LARGE('1:31'!G57,SUMPRODUCT(COUNTIF(INDIRECT(ROW(1:31)&"!G57"),">=0"))) #2さんと考える方向はほぼ一緒です。 つまり、指定範囲から「0以上」のセルを数え(n)、 同範囲の「n番目に大きい」値を引っ張ってくる、と言うものです。 ただしCOUNTIF関数は基本的に「串刺し計算」が出来ない関数の一つですから、 SUMPRODUCTという配列関数を使っています。 まぁ、ややこしいのは間違いないですね。 #1さんがおっしゃる通り、 難しくてメンテナンス出来ない式を使うのは個人的にはオススメしません。 業務でお使いなら、引き継ぎ等を考えても 「他人には通じそうにない冗長な式」は避けておいた方が無難です。 今回のケースも、別の位置に転記するなりして、 そこを基にMIN関数で集計してやるのが単純でわかりやすいですね。 例えば適当なシートの任意のセルに   式(A1):=IF(INDIRECT(ROW(A1)&"!G57"))<0,"",INDIRECT(ROW(A1)&"!G57")))     ※以下、31行分フィル(A1:A31)     (もちろん「=IF('1'!G57<0,"",'1'!G57)」で頑張ってもOKですけどね。) としてやり、この範囲をMIN関数で   式(B1):=MIN(A1:A31) こんな感じで見に行く感じですね。 以上、蛇足的な回答になってしまいましたが、参考までに。

jyunmai
質問者

お礼

回答していただきありがとうございます。 詳しい説明とアドバイスありがとうございました。 まだまだエクセル初心者なので勉強していきます。

回答No.4

SMALL関数で、下からn番目のnを、 「データの個数 - 0以上のデータの個数 +1」 で指定すればOKなのでは? 図では、データ範囲A1:A7、B1に、 =SMALL(A1:A7,COUNT(A1:A7)-COUNTIF(A1:A7,">=0")+1) でテストしました。

jyunmai
質問者

お礼

分かりやすい図で大変勉強になりました。 少しづつですがエクセル勉強していきたいと思っています。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

次のような式にすればよいでしょう。 =IF(MIN('1:31'!G57)=0,SMALL('1:31'!G57,2))

jyunmai
質問者

お礼

回答ありがとうございます。 教えていただいた関数では数値が表示されませんでした。 なぜか・・・。 また質問する際にもよろしくお願いします。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

一応ご質問の直接の回答としては、例えば =MIN(IF(SUBTOTAL(9,INDIRECT(ROW(A1:A31)&"!G57"))>0,SUBTOTAL(9,INDIRECT(ROW(A1:A31)&"!G57")))) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力するなどの事は出来ます。 しかしこんなイミフメイの数式を使うはきっぱりやめて 各シートの所定のセルに、例えば0の時は""を記入する関数を利用するなどの細工を施して =MIN('1:31'!G57)  とふつーに計算した方が、遥かに簡単です。

jyunmai
質問者

お礼

早速の回答ありがとうございます。 教えていただいた関数が理解できるようにエクセル勉強していきたいと思います。

関連するQ&A

  • エクセルの関数について教えてください

    先日もコチラで質問させていただき エクセルでの表作りを1から見直しております。 さて、次のような事が出来るのか、出来ればどのような関数(数式?)を使えばいいでしょうか? ●maxとかminの関数で最大・最小値を引数にしますが、この最大・最小値を出した日付を引数にする事は出来るのでしょうか? ちなみに表はベーシックな表にしています。1番上の行に見出しを右方向に、1番左の列に下に向かって日付を 以上、よろしくお願い致します。

  • エクセルで最小値から0を除く方法

    早速ですが、エクセル入力したデータから最大値と最小値を求めようとしています。 最大値は=MAX(A1:A100)で求められるのですが、最小値には0が入っていると=MIN(A1*A100)では0となってしまいます。 0以外で最小値を求めたいのですが、どのように設定すればよいでしょうか? どなたかご教授いただけると助かります。

  • エクセル又はOpenOfficeで条件付き最小値を

    エクセル又はOpenOffice.orgで条件付きの最小値を抽出する数式 当方OpenOffice.orgのCalc使用です。 関数も勉強し始めたばかりで、まだまだ理解しきれていませんが、宜しくお願いいたします。 下記の条件で最小値を出す数式を色々調べては試しているのですが、中々うまくいかないので質問させて下さい。   A(所要時間)  B 1  01:00:00    04.5 2  00:30:00    20.5 3  02:10:00   -10.0 4  01:40:00    07.5 5  00:25:00   -05.0 6  00:45:00    13.5 7  00:15:00   -03.5 8  01:05:00    18.0 上記表からB列の値がプラス(つまり0以上)の中の最大所要時間(この場合01:40:00)と最小所要時間(00:30:00)、 B列の値がマイナス(0以下)の中の最大所要時間(02:10:00)と最小所要時間(00:15:00)をそれぞれ求めたいと思っています。 最大所要時間は「=SUMPRODUCT(MAX((B4:B100>=0)*A4:A100))」で求められましたが、MINではダメでした。 SMALLを使うのかもと思い調べてみましたが、だんだん混乱してしまって・・・ 似たような質問はたくさん見つかりましたが、配列数式を使用するものばかりでした。 Calcは配列数式に制限があり、IFやINDEXが含まれる配列数式は使えないらしく、苦労しています。 DMIN関数も考えましたが、条件を割り当てるために不要なセルを作成しなければならないので、避けたいと思いまして。 最小時間が求まれば完成という段階なので、できれば数式で対応したいです。 色々と制約があって申し訳ないのですが、お知恵をお貸しいただけると助かります。 よろしくお願いいたします。

  • エクセルで指定月の最小値を抽出したいです

    日頃からお世話になっております。 今回教えていただきたいのは、 エクセルにて指定月の最小値の 抽出方法が分からず困っております。 まずは、簡易化したエクセルが下記です。 ---------- シート1 ----------   A       B 1 2014/5/12 15.1 2 2014/5/23 20.8 3 2014/5/30 10.1 4 2014/6/11 25.6 ---------- シート2 ----------   A(指定月) B(最大値)  C(最小値) 1 2014/5    20.8      ● 2 2014/6    25.6      ● ---------- 上記の構成で、B1に 下記のコードを入れると 正しく最大値は抽出されます。 =MAX(INDEX((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1)*シート1!B$1:B$65640,)) しかしながら、シート2のC1に 上記のコードのMAXをMINに 書き換えるだけでは最小値は 抽出してくれません。。。 何かほかに手立てはありますでしょうか? ご教授よろしくお願いいたします。>< ※ちなみにエクセルは Excel2007を使用しております。

  • excelで決まった間隔の最大最小を求める

    excelで縦に1分おきのデータが並んでいます。 これを100行ずつくくってその範囲の最大、最小を求め 以後それを繰り返し行いたいのですが方法がわかりません。 =MIN(A1:A100) でそれ以降を=MIN(A1+100:A100+100)の ような感じにはいかないのでしょうか? いい方法があれば教えて下さい。 例)1日100個のデータがあります。その中からMIN/MAXを選んで 以降毎日のMIN/MAXのデータのみを抽出してグラフ化したい。

  • エクセルの関数について

    エクセルの関数について ある条件での最大値、最小値を求める関数はないですか。 表のシートとは別シートに一覧として出力したいのですが。  例  A列   B列  支店名  金額  この場合の支店別の最大値、最小値を求める関数はないですか。  

  • EXCELでの集計

     Excel2000で以下の表の最大絶対値と最小絶対値を求めたい A B C D 1 +1 +3 -7 2 -8 +2 +5 3 -3 +4 -2   D1に絶対値の最大値(8)D2に絶対値の最小値(1)を返したいのですが、最大値は、先日教えてもらって =IF(ABS(MAX(A1:C3))>ABS(MIN(A1:C3)),MAX(A1:C3),MIN(A1:C3))で求められましたが、絶対値の最小値は、まず各セルの絶対値を求めて、その中から最小を求める以外にないのでしょうか?できれば、1つのセルに関数を入れて答えを求めたいのですが。

  • 連続しないセルから最小値を引き出すが、ゼロを除外

    3つおきにセルを拾い(20セル)それから最小値を引き出すのですが、min関数では、ゼロを拾ってしまいますし、small関数では、連続しないセルは対応しないようです。 お知恵をお願いします。

  • ExcelのMINとMAXを下から(上から)2つ出したい。

    エクセルの集計表にて、 右端に合計と平均を出していて そこに最大値と最小値を付け足したいのですが とりあえず、 =MAX(A1:K1)や=MIN(A1:K1)で最大&最小を出す事は出来たのですが、 2番目に大きい数値、2番目に小さい数値を出すにはどうすれば 良いのでしょうか? 教えて下さい。宜しくお願い致します。

  • エクセルで最新の最小値をだしたいのですが、、、

    エクセルで、最新の最小値をだしたいのですが、 MIN関数で最小値はだせるのですが、 最小値が同じものが複数あり、 一番新しいデータ入力日の最小値を 表示したいのでずが、 一番古いデータ入力日のものが 最小値として呼び出されてしまいます。 OR等を使って式を入力してみたのですが、 エラーがでてうまく値がだすことができません。。。 データは、C1からZ1までデータ入力日がはいっています B2からZ50まで数字がはいっています。 それぞれの行ごとの最小値をA列に表示させたいと思っています。 さらにそのあと、B列に、最小値のデータ入力日も表示させたいと 思っています。 ↓A2セルには、”10”  B2セルには、”3/11”と表示させたいのですが...  =MAX(MIN($C2:$Z2)*$C1:$Z1) こんな感じで作ってみたのですが、VALUEのエラーが でてしまいます。。      A列  B列  C列  D列  E列・・・ 1行目          2/10 3/10  3/11・・・ 2行目          10    15  10 ・・・  3行目          20    25  30 ・・・ ・ ・ ・ どなか分かる方どうか教えてください。 よろしくお願いします。

専門家に質問してみよう