- ベストアンサー
エクセルで期間内の最大、最小、以上、以下を求める方法
- エクセル2002、2003を使用して、期間内の最大値、最小値、以上、以下を求める方法について説明します。
- 特定の期間内にある降順の日付と整数が入力されているA列とB列があります。
- 特定期間内でB列の最大値、最小値、および特定の条件(F3のF4以上、F3のF4以下)を求めるためのセル参照を使った計算式について説明します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ご質問で挙げられたようなデータなのでしたら 最大値: =MAX(INDEX(B:B,MATCH(F1,A:A,0)):INDEX(B:B,MATCH(F2,A:A,0))) 最小値: =MIN(INDEX(B:B,MATCH(F1,A:A,0)):INDEX(B:B,MATCH(F2,A:A,0))) のようにできます もし実際のデータが「連続した日付ではない」場合は 最大値: =MAX(IF((F1<=A1:A999)*(A1:A999<=F2),B1:B999)) と記入し、コントロールキーとシフトキーを押しながらEnterで入力 最小値: =MIN(IF((F1<=A1:A999)*(A1:A999<=F2)*(B1:B999>0),B1:B999)) と記入し、コントロールキーとシフトキーを押しながらEnterで入力 といった具合にすることもできます 指定期間内であってF3*F4%以上の最小の数: =MIN(IF((F1<=A1:A999)*(A1:A999<=F2)*(B1:B999>=F3*F4),B1:B999)) と記入し、コントロールキーとシフトキーを押しながらEnterで入力 指定期間内であってF3*F4%以下の最大の数: =MAX(IF((F1<=A1:A999)*(A1:A999<=F2)*(B1:B999<=F3*F4),B1:B999)) と記入し、コントロールキーとシフトキーを押しながらEnterで入力
その他の回答 (4)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 (F4セルはパーセント表示にしておきます) ↓の画像で説明します。 作業用の列を1列設けます。 作業列C2セルに =IF(COUNTBLANK($F$1:$F$2),"",IF(AND(A2>=$F$1,A2<=$F$2),ROW(A1),"")) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 E7~H7はすべて配列数式になってしまいますので、Shift+Ctrl+Enterキーで確定します。 E7セルに =IF(COUNTBLANK(F1:F2),"",MAX(IF(C1:C1000<>"",B1:B1000))) F7セルに =IF(COUNTBLANK(F1:F2),"",MAX(IF(C1:C1000<>"",B1:B1000))) G7セルに =IF(SUMPRODUCT(($B$2:$B$1000>=$F$3*$F$4)*($C$2:$C$1000<>""))>=ROW(A1),INDEX($B$2:$B$1000,SMALL(IF($B$2:$B$1000>=$F$3*$F$4,IF($C$2:$C$1000<>"",$C$2:$C$1000)),ROW(A1))),"") H7セルに =IF(SUMPRODUCT(($B$2:$B$1000<=$F$3*$F$4)*($C$2:$C$1000<>""))>=ROW(A1),INDEX($B$2:$B$1000,SMALL(IF($B$2:$B$1000<=$F$3*$F$4,IF($C$2:$C$1000<>"",$C$2:$C$1000)),ROW(A1))),"") 最後にG7・H7セルを範囲指定 → H7セルのフィルハンドルで下へコピー! これで画像のような感じになります。 ※ この画面から各セルにコピー&ペーストする場合、配列数式セルはそのままでは配列数式になりませんので 各セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 ※ 極端にデータ量が多い場合、配列数式にするとPCにかなりの負担をかけてしまいます。 ※ 作業列を使うのであればもう少し作業列を使って、配列数式にしない方法が良いかもしれません。 参考になりますかね?m(_ _)m
お礼
皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
期間(F1,F2)がデータよりも上下にはみ出していても可、逆転も可(下へのはみ出しはMATCH関数の「照合の型」のお陰) MAX: =MAX(INDIRECT("B"&(MATCH(MIN(F$2,A$1),A:A,-1))):INDIRECT("B"&MATCH(MIN(F$1,A$1),A:A,-1))) MIN: =MIN(INDIRECT("B"&(MATCH(MIN(F$2,A$1),A:A,-1))):INDIRECT("B"&MATCH(MIN(F$1,A$1),A:A,-1))) F3、F4を使った問題は意味不明、同じくMAX/MINなのか、数なのか? F4(%)の定義も曖昧、1以下の値なのか、100までの値なのか? いずれにしても補助計算列を使って検証を簡単にできるようにした方が賢明。
お礼
皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!
- hallo-2007
- ベストアンサー率41% (888/2115)
後順に対応させたいなら MATCH($F$2,A:A)の照合の型 で -1を指定することが可能です。 MATCH($F$2,A:A,-1)と修正してみてください。 正し、開始日と終了日が実際にデータにない日を入力した場合などに 開始日、終了日を含むのか含まないのかで、微妙に答えが違うかもしれませんので、十分に検証してみてください。 >F3のF4以上、F3のF4以下を求める式はまったく分かりませんでした。 求めいたいのは、データの個数でよろしいでしょうか? 同様な式で COUNTIF関数で考えてみてはいかがでしょうか。 ただ、データ数もそうは多くないので、SUMPRODCT関数で総当たりに条件をあてはめてもそうは重くならないかと。 =SUMPRODUCT((A2:A400>F1)*(A2:A400<F2)*(B2:B400>F3*F4)*(B2:B400<F3*(1+F4))) こんな感じでしょうか?
お礼
皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!
- kybo
- ベストアンサー率53% (349/647)
最大値 =MAX(OFFSET(INDIRECT("b"&MATCH($F$2,A:A,-1)),1,0):INDIRECT("b"&MATCH($F$1,A:A,-1))) 最小値 =MIN(INDIRECT("b"&MATCH($F$2,A:A,-1)):INDIRECT("b"&MATCH($F$1,A:A,-1))) >F3のF4以上、F3のF4以下 とは、例えばF3が5000でF4が50%だと、F3×F4=2500以下、以上という意味でしょうか? とすると、 以下の数式をCtrlキーとShiftキーを押しながらEnter F3のF4以上の最小値 =MIN(IF((A1:A1000>=F1)*((A1:A1000<=F2)*(B1:B1000>=(F3*F4))),B1:B1000)) F3のF4以下の最大値 =MAX(IF((A1:A1000>=F1)*((A1:A1000<=F2)*(B1:B1000<=(F3*F4))*(B1:B1000>0)),B1:B1000))
お礼
皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!
お礼
皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!