エクセルで期間内の最大、最小、以上、以下を求める方法

このQ&Aのポイント
  • エクセル2002、2003を使用して、期間内の最大値、最小値、以上、以下を求める方法について説明します。
  • 特定の期間内にある降順の日付と整数が入力されているA列とB列があります。
  • 特定期間内でB列の最大値、最小値、および特定の条件(F3のF4以上、F3のF4以下)を求めるためのセル参照を使った計算式について説明します。
回答を見る
  • ベストアンサー

エクセルで期間内の最大、最小、以上、以下を求めたい

エクセル2002、2003を使用してます。 下記のような場合、どのように式を作ればよろしいでしょうか? A列に土日祝日以外の降順日付があります。(300~400行程度) B列に順不同の整数があります。(日付の数と同数)※マイナスはありません。 また、A・B列の1~3行目程度にタイトル、項目名などの文字列もあります。   A       B 2012/9/7   5897 2012/9/6   155 2012/9/5   826 2012/9/4   7402 上記から、特定期間内(例えば、2012/1/10~2012/2/10等)で、B列の最大値、最小値、F3のF4以上、F3のF4以下を求めたいです。 計算式はセル参照を使用したいので、下記のようにしました。 F1=開始日 F2=終了日 F3=整数 F4=パーセント数字 出来る限り自分で調べまして下記のような計算式まで近づけたのですが、日付が昇順だとこれで出来るのですが、降順だと正しく求められません。降順に対応するにはどこを訂正したらよろしいでしょうか? 最大値を求める式:=MAX(INDIRECT("b"&MATCH($F$1,A:A)):INDIRECT("b"&MATCH($F$2,A:A))) 最小値を求める式:=MIN(INDIRECT("b"&MATCH($F$1,A:A)):INDIRECT("b"&MATCH($F$2,A:A))) また、F3のF4以上、F3のF4以下を求める式はまったく分かりませんでした。 どうかご教示下さいますよう宜しくお願い致します。

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

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

ご質問で挙げられたようなデータなのでしたら 最大値: =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で入力

CBR400RR
質問者

お礼

皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! 一例です。 (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

CBR400RR
質問者

お礼

皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!

回答No.4

期間(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までの値なのか? いずれにしても補助計算列を使って検証を簡単にできるようにした方が賢明。

CBR400RR
質問者

お礼

皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

後順に対応させたいなら 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))) こんな感じでしょうか?

CBR400RR
質問者

お礼

皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

最大値 =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))

CBR400RR
質問者

お礼

皆様、ご回答くださりましてありがとうございます。 皆様のご回答を元に色んなケースを想定して動作確認を繰り返しておりました為に、お礼が遅くなりました。申し訳ございませんでした。 お陰様でなんとか理想的な形にすることが出来ました。 ご回答の中で一番理想形に近かったのは、No.1の方のお答えでした。 私の説明不足だった点があり、少し修正も加えましたが、どうやっても出来なかった事が出来るようになって、今まで手動でやってたものが自動で出来るようになり作業効率も正確性も格段に上がり、ほんとに皆様に感謝しております。 私自身もとても勉強になりました。ありがとうございました!!

関連するQ&A

  • Excelで最大値最小値の検出

    皆さん こんばんは。  データのExcel配列は下記のようになっています。空白セル(数は不定)を境目に異なるグループに分け、各グループの最大値あるいは最小値を(グループごとに計算すればできますが、データの量が多いので手間かかります)一遍で検出したいですが、何かいい方法はないでしょうか。皆さん教えてください。宜しくお願い致します。 A列     B列        C列      D列     (時間)  (データ)     (最大値)   〈最小値) 0:00   7.316784186 0:05   7.178492184 0:10   7.031467139 0:15 0:20 0:25 0:30   4.878174647 0:35   3.402687629 0:40   2.051343872 0:45   0.420805671 0:50 0:55   2.175188612 1:00   2.849337126 1:05   3.256652642 1:10 1:15   4.427495186 1:20 1:25 1:30 1:35   6.008051928 1:40   6.773041277  ・    ・  ・    ・  ・    ・  ・    ・

  • エクセル 範囲内の最小値・最大値

    以下のように、SHEET 1 のA列に日付、B列にその日のドル円レートが入っているとします。(数値はダミーです。) [SHEET 1]      A       B 1   2009/4/20   101 2  2009/4/21    98 3   2009/4/22   100 4  2009/4/23    111 5   2009/4/24    81 6   2009/4/25    96 7   2009/4/26   105 次にSHEET 2の A1 とB1 に日付を入力し C1 でその両方の日付の間のドルレートの最小値(または最大値) を表示させるようにするには、どのような関数を入力すれば 良いでしょうか? 例えば A1 に 2009/4/21 B1 に 2009/4/25 と入力されている場合、その間のドルレート最小値である 81がC1に表示されるようにしたいわけです。 (A1 と B1には都度、異なる日付を入力し、そのたびにC1が更新されるようにしたい。) 恐れ入ります。エクセルに詳しい方、なにとぞご教示くださいますようお願いいたします。

  • 最小値、最大値を求め、真横に表示させるには

    過去にも同じような質問がありますが、解答の通り行っても出来ませんでした。  例えばA列にランダムに数値を入力し、その数値より最小値、最大値を求め B列真横に「最小値」「最大値」と下記のように、マクロを使用して行いたいの ですが、どなたかお教え願います。      A列     B列      57      36      78       最大値      41      12      最小値       .....      .....

  • 条件に合う最大・最小

    エクセル 条件に合う最大 最小 について このような感じです。 1___A_____G_______H_____I_____O____ 2_________4_______3____3.1____1____ 3_________4_______3____3.1____2____←最大値 4_________3.1_____3____3.1____2__ 5________-2.1____-2_____1____-1__ 6________-2.5____-2_____1____-2____←最小値 7________-2.2____-2_____1____-2___ 以下値があります。 I列の最大値又は、最小値で複数最大(最小)がある場合には、 その最大(最小)の同じ行のO列の大きい(小さい)方で、 最大値(最小値)を判断する。 同様にO列も同じならH列の大きい(小さい)方で、 また、H列も同じなならG列の大きい(小さい)方で、 最大値(最小値)を求める。 優先順位は、I列→O列→H列→G列の順 *最小値の場合には、全て小さい値を対象。 上記例示の場合には、 最大値は3行目 最小値は6行目 値を重み付け(I列を1000倍等)してから合計して、最大・最小を求める方法以外での質問です。例示では、簡単に示していましたが、それぞれ値の桁数が異なる場合には、重み付けの係数をその都度してしなければならなくなりますので。 また、最大値・最小値に値する行(A列)に最大・最小等を追記したい。 行で単純に順次値を比較する方法はないのでしょうか? 解決法を教えて頂きたいのですが、宜しくお願いします。

  • 最大値最小値に色付けする。

    エクセル2013で縦に月を横に時間の項目をとりたデータがあります。 対象データを範囲指定し列ごとに最大値、最小値にセルに色付けをする方法は無いでしょうか。 ちなみに行毎に色づけするのは 最大値は=A1=MAX(INDIRECT("A"&ROW(A1)&":F"&ROW(A1))) 最小値=A1=MIN(INDIRECT("A"&ROW(A1)&":F"&ROW(A2))) で出来るのですが、列毎に表示するにはどのような関数を使えば出来るのでしょうか。 また、条件付き書式設定で=b2=max(b2:b13)の数式を入れて隣にコピーするときに絶対値になっており範囲指定しなおす必要があるので表を範囲指定し数式を入れたい。

  • エクセル最大値最小値の計算

    あるデータの集まりから最大値最小値を引きたいのですが、一つ一つ計算式を入力するのは大変なので、自動に最大最小を見つけ出して計算させるにはどうしたらよいのでしょう =sum(a2+b2-最大-最小)という風な感じにしたいのですが・・・

  • エクセルで昇順データから検査値以上の最小の値の位置を取得するには

    検査範囲(A1:A10)のデータが、昇順に並んでいます。 検査値(B1)以下の最大の値および検査値以上の最小の値の両方を検索したいのです。 =MATCH(B1,A1:A31,1)で、検査値(B1)以下の最大の値の位置は取得できますが、=MATCH(B1,A1:A31,-1)で検査値以上の最小の値の位置を取得するには検査範囲のデータは、降順に並べ替えておく必要があります。 データの並び順をいじらず、両方を取得するワークシート関数はないのでしょうか?

  • Excelで最大値の求め方

    Excelで、A列とB列の4行目までに下記のように数値が入っています。 A列の最大値はA5セルに =MAX(A1:A4) と入力すれば求められます。 さらにB5セルに「A列最大値の行のB列の数値」を出力するにはどうすればよいのでしょうか?この例ではB5セルは1となります。 5 3 2 8 6 1 4 2 ご存知の方、教えてください。 よろしくお願いします。

  • エクセルの任意範囲の最大値最小値の取得について

    エクセルデーター任意範囲の最大値と最小値の取得方法について教えて下さい。 例は以下の形式です。 //////////////////////////////////////////////////////////////// A B C D E G H I O 1 0.51 1.32 0.32 0.34 2 0.59 1.43 0.33 0.35 3 0.62 1.59 0.30 0.36 4 0.60 1.57 0.31 0.30 5 0.59 1.62 0.34 0.39 ←"+1"          6 0.68 1.64 0.34 0.34 7 0.68 1.60 0.33 0.33 8 0.59 1.58 0.31 0.30 9 0.49 1.40 0.33 0.29 10 0.38 1.20 0.29 0.29 . . . . . 11 -1.2 -2.3 -1.3 -1.4 . . . . . E列:昇順に1からの値 G列,H列,I列,O列:完全な規則性はない正負小数点の値。大きく見ると値は増加や減少ではあるが、1行ずつ見ると常に増加や減少とはなっていない。 最終行も未確定で、10回または、5回の同じ様なデーターの繰り返しで、繰り返し点(最大・最小)の値も決まっていない。 10回または、5回の各繰り返し点(最大・最小)を抽出し、以下の値を追記したい。 I列の最初の最大値の同じ行(B列)に"+1"、最小値の同じ行(B列)に "-1"を追記したい。同様に、"+1"~"+10","-1"~"-10"または、 "+1"~"+5","-1"~"-5"を追記したい。 I列が同じ場合、O列→H列→G列の順に最大値と最小値を判断する。 説明不足であるかもしれませんが、エクセル関数の組み合わせや、マクロ、VBAいかなる方法でもかまわないので、早急に処理できる良い方法はないでしょうか? よろしくお願いします。

  • 最大値 最小値がわかりません。

    sin、cos、がわかりません。教えててください。 0°≦x≦180°において f(x)=1-2acosx-2sin^xとするとき (1)a=1のときf(x)の最大値はx=A度のときB            最小値はx=C度のときD (2)f(x)の最大値をM(a)としたときのM(a)の最小値は  a=EのときでFである。 以上のA~Fがわかりません。 教えてください。

専門家に質問してみよう