• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル又はOpenOfficeで条件付き最小値を)

エクセル又はOpenOfficeで条件付き最小値を抽出する方法

このQ&Aのポイント
  • エクセル又はOpenOffice.orgで条件付きの最小値を抽出する方法について質問があります。
  • 質問者はOpenOffice.orgのCalcを使用しており、条件付き最小値を求める数式を調べて試していますがうまくいきません。
  • 最大所要時間は「=SUMPRODUCT(MAX((B4:B100>=0)*A4:A100))」で求められましたが、最小所要時間を求める方法についてアドバイスを求めています。

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

  • ベストアンサー
  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

>Calcは配列数式に制限があり、IFやINDEXが含まれる配列数式は使えないらしく、苦労しています。 Calcが無いので検証できませんが 「=SUMPRODUCT(MAX((B4:B100>=0)*A4:A100))」で求められるのですよね =MAX((B4:B100>=0)*A4:A100) という配列数式 または =MAX(INDEX((B4:B100>=0)*A4:A100,)) ではだめだということですね SUMPRODUCT関数が使用可能として 以上、以下、未満、超 のく区別が微妙ですが >B列の値がマイナス(0以下)の中の最小所要時間(00:15:00) =SUMPRODUCT(MIN((B1:B100>=0)*1+A1:A100)) B列に 未入力や0がある場合 =SUMPRODUCT(MIN(((B1:B100>0)+(B1:B100=""))*1+A1:A100))

nekobucho
質問者

お礼

早々にご回答いただきありがとうございます。 こちらの数式で無事に解決いたしました。 別シートを作成しての検証作業中に、今までちゃんと計算してくれていたものが急にエラーになったりしてちょっと検証に手間取っておりました。 Calcの調子が悪かったのか、私のやり方がまずかったのかわかりませんが、とにかく最終的にはうまくいきました。 本当に助かりました。 ありがとうございました。

nekobucho
質問者

補足

補足ではありませんが、一言追加させていただきます。 皆さんをベストアンサーにしたいのですが、今回はsige1701様の「=SUMPRODUCT(MIN((B1:B100>=0)*1+A1:A100))」という数式が一番わかりやすかったので選ばせていただきました。

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

その他の回答 (5)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.6

ANo.5です。 先ほどの補足願いは、質問を勘違いしておりましたので無視してください。 プラスの最小所要時間  =SUMPRODUCT(MIN(A1:A100+99999*(B1:B100<=0))) マイナスの最大所要時間 =SUMPRODUCT(MAX((A1:A100)*(B1:B100<0))) マイナスの最小所要時間 =SUMPRODUCT(MIN(A1:A100+99999*(B1:B100>0))) こんな感じでいかがでしょう。 OOo3.1で確認しました。

nekobucho
質問者

お礼

早々にご回答いただきありがとうございます。 前の方の回答でもうまく行きましたが、 こちらの数式でも大丈夫でした。 別シートを作成しての検証作業中に、今までちゃんと計算してくれていたものが急にエラーになったりしてちょっと検証に手間取っておりました。 Calcの調子が悪かったのか、私のやり方がまずかったのかわかりませんが、とにかく最終的にはうまくいきました。 本当に助かりました。 今回皆さんに回答を頂いた事でとても勉強になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

今更の補足願いですが、最大値、最小値が複数登場する時はどうするのでしょう? 先に登場した方、後?それとも複数登場は無い?

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>Calcは配列数式に制限があり、IFやINDEXが含まれる配列数式は使えないらしく 私の回答に対する返答がないので、Web検索をしてみたところ、CalcでもCtrl+Shift+Pagedownで配列数式にできるようですね。 またIF関数を含む数式は配列数式として認識できないようですね。 私の提示したSMALL関数の数式の中で、もしINDEX関数で配列を範囲に変換する部分がCalcでは対応できないということなら、この部分を削除した以下のような関数にして、Ctrl+Shift+Pagedownのキー操作でうまくいかないか調べてみてください。 =SMALL((B4:B100>=0)*A4:A100,COUNTBLANK(B4:B100)+COUNTIF(B4:B100,"<0")+1)

nekobucho
質問者

お礼

早々に回答をいただきありがとうございます。 返事が遅くなり、申し訳ございません。 教えていただいた事を試したり理解するのに時間がかかっていました(汗) その間に更に色々回答を頂いていたのですね。 本当にありがとうございます。 配列数式についてまだあまり理解しておらず、うまく伝えられずにすみません。 ご指摘の通り、IFやINDEXが含まれると「Ctrl+Shift+Enterの操作ができない」という事です。 最初に教えていただいた「=SMALL(INDEX~」の式では変数が足りない旨のエラーが出てしまいました。 「Ctrl+Shift+Pagedown」というのは初めて知りました。 新しく頂いたほうの式で「Ctrl+Shift+Pagedown」を試した所うまくいかず、 「Ctrl+Shift+Enter」で{}に囲まれた状態になったのですが、やはりエラーになってしまいました。 私もCalcとエクセルの違いを全て把握しきれていないので、 もしかしたらその違いが原因でうまくいかないのかもしれませんね。 私の知識不足でお手数おかけしてしまって申し訳ありません。 でも今回頂いた回答で、数式の組み立て方や考え方など、とても参考になりました。 ただ今の私のレベルでは理解するまでに少し時間がかかりそうです・・・。すみません。 他にも回答を頂いているので、そちらもあわせてちょっと整理させて下さい。 また疑問がでてきたら質問させていただくかもしれませんが、その時は宜しくお願いいたします。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

質問のタイトルがエクセルでもOKのようなので、参考までにエクセルで表示できる例を示します。 >似たような質問はたくさん見つかりましたが、配列数式を使用するものばかりでした。 Calcは配列数式に制限があり、IFやINDEXが含まれる配列数式は使えないらしく、苦労しています。 基本的に、例示のSUMPRODUCT関数も配列数式です。 エクセルでCtrl+Shift+Enterで確定してもよいなら以下の式になります。 =MIN(IF((B4:B100<>"")*(B4:B100>=0),A4:A100,100)) ご質問の趣旨が、Ctrl+Shift+Enterの操作ができないということなら以下のような数式になります。 =SMALL(INDEX((B4:B100>=0)*A4:A100,),COUNTBLANK(B4:B100)+COUNTIF(B4:B100,"<0")+1) 上記の数式で表示できないなら、OpenOfficeには具体的にどのような制限があるのか提示してください。 例えば、上記の数式のINDEX関数で配列を範囲に変更できないなら(または配列数式そのものが入力できない仕様なら)、補助列なしには対応できないと思います。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.1

添付図参照 C1: =IF(B1>=0,A1,"") C10: =MAX(C1:C8) C11; =MIN(C1:C8) D1: =IF(B1<=0,A1,"") D10; =MAX(D1:D8) D11: =MIN(D1:D8) 範囲 C1:D8 が「不要なセル」ならば、この回答は無視してください。

nekobucho
質問者

お礼

早々に回答いただきありがとうございます。 ご指摘の通りC1:D8のセルは不要なのですが、このような方法なら計算も単純化できますね。 今後はそういった点もふまえて表の組み立てを考えて行こうと思います。 今回は、知りたかった事とちょっと違いましたが、今後につながるという意味ではとても参考になりました。 ありがとうございます。

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

関連するQ&A