• ベストアンサー

配列数式を用いて、最小値を表示させたい

配列数式について教えてください。 先回、こちらで質問させていただいて、なんとか理解できつつあります。回答していただきました方、どうもありがとうございました。 一応の理解はできたのですが、応用しようとしたところ、うまく数値が表示されてこないため、再度質問させていただきたいと思います。どうかよろしくお願いいたします。 表を添付いたしましたが、1月2日から4日までで、時間ごとにその最大値と最小値が表示されています。 今回、1月2日に合致したデータで、配列数式を用いて、その最大値と最小値を表示させようとしました。 その結果、最大値はちゃんと表示されるにも関わらず、最小値の値が「0」の表示となってしまいます。 最大値の式は MAX((A2:A10="1月2日"*1)*C2:C10) 最小値の式は MIN((A2:A10="1月2日"*1)*D2:D10) としています。 どこがまちがっているのでしょうか? ご教授、よろしくお願いいたしますm(_ _)m

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

>1月2日の10時から11時の間の最小値 条件が加わっても考え方は同じです 条件を加味した場合に0になる数値を””(null)に変更するだけですので =MIN(IF((A2:A10="1月2日"*1)*(B2:B10=>10)*(B2:B10=<11),D2:D10,"")) こうなります

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.5

またまた登場、onlyromです。 >1月2日の欄がどちらも同じ数字が出ているため >何が問題であるのかの理解ができておりません。 問題は、1月2日以外の、0とFALSEにあります。 1月2日と3日のD列のデータがプラスとマイナスの場合で説明。 Fは、"FALSE" とし、 結果は、”◎:正解、■:不正解 ”とする。 【IF未使用の場合の配列要素と結果】  1、 2、 3、 0、0、0  ◎MAX(3) ■MIN(0) -1、-2、-3、0、0、0  ■MAX(0) ◎MIN(-3) 【IF使用の場合の配列要素と結果】  1、 2、 3、 F、F、F  ◎MAX(3) ◎MIN(1) -1、-2、-3、F、F、F  ◎MAX(-1)◎MIN(-3) 上記でわかるように、 IFを使わないと、プラス、マイナスによって、MAX,MINが正解や不正解になる場合があるが IFを使うと、プラス、マイナスに関係なく、MAX,MINはともに正解になる なぜこのようななるかというと、 関数MAX,MINは数値以外を無視するという特徴があるので、 0は対象になるが、FALSEは対象にならないからです。 ●結論● よって、必ず、IFを使わなければならない。   以上。  

colnago98
質問者

お礼

なるほど!ようやく理解できました(^-^) たいへん助かりました。 ありがとうございますm(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 配列の確定は必要ありません。 最大値 =MAX(INDEX((A2:A10="1月2日"*1)*C2:C10,,)) 10時~11時 =MAX(INDEX((A2:A10="1月2日"*1)*C2:C10*(B2:B10>=10)*(B2:B10<=11),,)) 最小値 =MIN(INDEX(SUBSTITUTE((A2:A10="1月3日"*1)*D2:D10,0,10^10)*1,,)) 10時~11時 =MIN(IF((A2:A10="1月3日"*1)*(B2:B10>=10)*(B2:B10<=11),D2:D10,""))

colnago98
質問者

お礼

ご回答ありがとうございました! 色々な表示の仕方があるんですね。 INDEX関数など、まだ勉強ができておりませんので、また勉強させていただきたいと思います。ありがとうございました!(^-^)

全文を見る
すると、全ての回答が全文表示されます。
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

配列数式、ちょと理解し難いですよね??、 IFを入れた場合と今回のようにIFを入れない場合では どういう配列になるのか目で確認する方が理解が早いでしょう。 以下のようにしてください。 E列、F列があいてますのでその列を使いましょうか。 E2~E10 を範囲選択して  =(A2:A10="1月2日"*1)*D2:D10 といれCtrl+Shift+Enterで確定する   F2~F10 を範囲選択して =IF(A2:A10="1月2日"*1,D2:D10) といれCtrl+Shift+Enterで確定する   このことからも分かると思いますが、 MAXの方もIFをつけないと拙い場合があります。 試しに1月2日のデータに、マイナスの値を入れてみてください。 どうでしょう、 IFにはそれなりの意味があるということが分かったかと??? 最大値: MAX( If(A2:A10="1月2日"*1, C2:C10) ) 最小値: MIN( If(A2:A10="1月2日"*1, D2:D10) ) 以上。

colnago98
質問者

補足

ご回答ありがとうございました。 教えていただいた事で、まだ理解できていない点があるため質問させてください。 E2~E10に=(A2:A10="1月2日"*1)*D2:D10を入力し、確定したたところ、1月2日の欄は、「1」「2」「3」と表示され、それ以外の日にちは「0」の表示になりました。 またF2~F10に=IF(A2:A10="1月2日"*1,D2:D10)を入力し、確定したところ、1月2日の欄は、「1」「2」「3」と表示され、それ以外の日にちは「FALSE」の表示になりました。 表示が違うのはわかったのですが、1月2日の欄がどちらも同じ数字が出ているため、何が問題であるのかの理解ができておりません。また、「0」の表示と「FAULSE」の違いは何なのでしょうか? よろしければ、その点を再度教えていただけると助かりますm(__)m 最大値のマイナスについて入力し直したところ、おっしゃられていたように表示されませんでした。逆に最小値はちゃんと表示されるのですね。参考になりました。ありがとうございます(^-^)

全文を見る
すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

A2:A10="1月2日"*1 この部分が問題で1月2日以外が0になってしまうため最小値が0になってしまいます。 最大値の場合はそのままの計算ですんなり出ますが、最小値の場合は少し変則的な処理が必要になってしまいます。 =MIN(IF(A2:A10="1月2日"*1,D2:D10,"")) とか =SMALL((A2:A10="1月2日"*1)*D2:D10,SUMPRODUCT((A2:A10<>"1月2日"*1)*1)+1) などで

colnago98
質問者

補足

なるほど! 最大と最小では異なる処理が必要なんですね。 エクセルは奥が深いですね!(^^; ふとここで疑問がわいたのですが、 上記の例で、今は1月2日の最小値を出す式となっているのですが、 もう一つ条件を加えて、1月2日の10時から11時の間の最小値を 出すようにするためには、どのような式にしたらよいのでしょうか? 条件が複数になった場合、どう式をかけばよいか分からないため、たいへん恐縮ですが、アドバイスいただけると助かります。 よろしくお願いいたしますm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列数式について教えてください

    配列数式について教えてください。 表を添付しました。配列数式を用い、データの抽出をしようとしましたが、「0」の表示となってしまい、希望する数値が表示 されませんでした。式も、表に記入してあります。 どうすれば、正しいデータが抽出されるでしょうか? 表の内容は、1月2~4日までのデータがあり、、それぞれ9:00~9:02の1分ごとに、その最大値と最小値が記入されています。 1月2日~4日の中で、9:00に該当した最大値を抽出したいと 思います。表に従えば、「70」が表示されるべきですが、「0」と表示されてしまいます。なぜなのでしょう? 式のどこを直したらよいか、どうかご教授願います。

  • 配列数式を用いたINDEX関数について教えてください

    INDEX関数について教えてください。 先日来、配列数式について教えていただいている者です。 相場の始値を表示させる式で、INDEX関数を使うと良いと教えていただきました。その際、同じ日にち内でデータを拾う形で質問し、回答していただきましたが、その後、自分で、異なる日にちも含めて表示させようとしたところ、「0」の表示となってしまいました。 式は日にちを変えただけなのに、なぜエラーとなってしまうのかがどうしても分かりません。どうか教えてくださいm(_ _)m 表を添付しましたが、式が小さくてみずらいかと思いますので、下記に表示させていただきます。 【2008/1/4の式】   INDEX($C$2:$C$13,MATCH(MIN(IF(($A$2:$A$13="2008/1/4"*1)*($C$2:$C$13<>0),$B$2:$B$13,"")),$B$2:$B$13)) 【2008/1/7の式】 INDEX($C$2:$C$13,MATCH(MIN(IF(($A$2:$A$13="2008/1/7"*1)*($C$2:$C$13<>0),$B$2:$B$13,"")),$B$2:$B$13))

  • 《エクセル2000》配列数式とMIN関数を使い、最小値を出したいのですが

    いつもお世話になっております。 配列数式とMIN関数を使って最小値を出す作業をしていますが、最小値は0.3なのに0.0と返って来てしまいます。 条件は「A列が1で、B列が数字だったら」なのですが、B列には空白も入っています。 B列の空白のセルは、ISNUMBER関数でチェックするとFALSEが返ってくるのですが、もしや空白を0とみなしているのでしょうか。 COUNTIFのMIN版と言いますか、条件つきで最小値を出せる関数があればいいのですが…原因と対策をご存じの方、どうかご教示を。

  • エクセルで特定のマイナス値を除く最大値と最小値について

    エクセルで、ある特定の値(-99999)を除く最大値と最小値を =MAX(IF(A1:A10<>-99999,A1:A10,"")) =MIN(IF(A1:A10<>-99999,A1:A10,"")) の配列数式を使って求めました。 ただ、A1:A10がすべて-99999の場合、0がかえってきてしまいます。 この場合、-99999と表示するにはどのようにすればよいのでしょうか? 1つの式で、上記2つの処理をするにはどのようにすればよいのでしょうか?

  • ある条件を満たした最も近い数値を求める配列数式

    ある条件を満たした最も近い数値を求める配列数式について質問します。 A列には,C列の数値と比較する元になる数値が並んでいます。 B列には,D列の数値と比較する元になる数値が並んでいます。 C列には,A列の数値と比較する対象となる数値が並んでいます。 D列には,B列の数値と比較する対象となる数値が並んでいます。 E列には,計算式が入ります。 すなわち,例えば,E20には, C$1:C20の範囲内の数値で, 右となりにあるD$1:D20の数値が0でなく,かつ,B$1:B20の数値以下である数値の中で, 最もA20の数値に近い数値を求めます。 A  B   C   D  E 1 100  10 89   0   0 2 101 8 90    10    0 3 102 11 92    11   92   4 99 7 77      0   0 5 87 11 68    12   92 6 105   14 100     7   100 7 102 9 78     8   100 8 88 15 102     0    90 9 98 14 99    10    99 10 150 13 78     9   100 11 103  8 79     0   100 12 87 9 68     8   78 13   77   10    70    10   78 14   89   12    71     5   90 15   65   14   102     3   68 16   88   13   105     0   90 17   123  15    98     8   102 18   145  17    99    10   102 19   85    8   100     0   90 20   84    9    87    5    78 一定の条件を満たした配列の合計を計算する関数として,SUMPRODUCT()という便利な関数がありますが, この関数に相当する関数がないので困っています。 MIN関数が配列数式に対応していて,かつ,MIN関数をうまく利用して,最も近い数値を求めることがでるき方法があれば,私の希望が解決できそうなのです。 以上,よろしくアドバイス願います。

  • 配列数式のコピーが、うまくできません

    配列数式で、式のコピーができなくなりました。 同じ形式で以前はできていたのに、今回やってみたところ どうしてもできません。どこがおかしいのか?以前できたと思っていたのは勘違いだったのか?ご存知の方いらっしゃいましたら、ご教授くださいm(_ _)m Aの列に1月4日を5つ、1月5日を4つ、1月6日を3つ表示し、1月4日の個数が何個であるかを、 SUM(I($A$1:$A$12=C1,1,""))の式で表示させ、5の回答を得ました。1月5日・1月6日の欄に、上記の式をコピー・ペーストしたところ、どちらも5の回答になってしまいました。 それぞれコピーされた式に対して、「SHIFT+CTRL+ENTER」の処理をすれば、正しい答えである、4・3の回答を出してきます。 以前は同様のやりかたをして、コピー・ペーストを行っただけで正しい数値がでたと思うのですが、何がおかしいのでしょうか?それとも、個々に再度入力しなければいけないのでしょうか?

  • エクセル又は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関数も考えましたが、条件を割り当てるために不要なセルを作成しなければならないので、避けたいと思いまして。 最小時間が求まれば完成という段階なので、できれば数式で対応したいです。 色々と制約があって申し訳ないのですが、お知恵をお貸しいただけると助かります。 よろしくお願いいたします。

  • 【Excel】範囲内にある数値の0以外の最小値を求める数式を教えてください

    添付した画像にある表を作成しようとしています。 各検収月の売掛金と買掛金のどちらかの最小値を相殺金額にしたいので 2009/05ならばF4に下記のような数式を入れてみました。  =MIN(IF(C4:D4<>0,C4:D4,"")) 関数の知識が乏しく、見よう見真似で式にしているところもあり エラーになってしまいます。 0以外の最小値にしたい理由は、2009/06のように売掛金か買掛金の どちらかが0だった検収月の場合に、最小値を0としたくないからです。 ※ここでいうと売掛金の303,240を相殺金額へもって行きたいのです F列の各セルに入れる数式を、ご教示頂けませんでしょうか。 よろしくお願いい致します。

  • 配列数式を用いて、表を完成させたいのですが

    配列数式について教えてください。 配列数式についてこちらのサイトで教えていただき、自分が作成したいと思っていた表がだんだん形となってきました。 ご回答いただいた方々、本当にありがとうございましたm(_ _)m 作成したいと思っている表は、株の1分単位の始値・高値・安値・終値を表示するようにしたいと思っているのですが、始値・安値についてうまくできません。 配列数式と若干異なるかもしれないのですが、エクセルで表示が可能かどうかを教えていただけないかと思い、再度質問させていただきたいと思います。 表を添付しました。通常9:00に始値がつくのですが、1月2日は調整がつかなかったため、金額が「0」で表示されています。 表示させたい始値は、金額がついた9:02の「8000」を表示させたいと思います。また最小値も、「0」ではなく、9:03の「7800」を表示させたいと思います。 何か良い方法はないでしょうか?

  • 配列数式について教えてください

    ここでエクセルでの文字列の検索方法をさがしていたらさきほど、ちょうど良くこのような配列数式をみつけました。 =IF(A1="","",MIN(IF(ISNA(MATCH("*"&$H$1:$H$9,A1,0)),10,$I$1:$I$9))) A1セルに、H1からH9の表にあるどれかの文字列を含んだ文字列をいれると対応するI1からI9の表の値を表示するものです。 使われているMINやISNAやMATCH関数はわかるつもりですが、組み合わせるとなんでこんなことができるのか、ぜんぜんわかりません。どなたか解説していただけないでしょうか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=653775

専門家に質問してみよう