• ベストアンサー

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

エクセルデーター任意範囲の最大値と最小値の取得方法について教えて下さい。 例は以下の形式です。 //////////////////////////////////////////////////////////////// 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いかなる方法でもかまわないので、早急に処理できる良い方法はないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 #1様の >内容を知っている質問者様だけです。 まあ、その通りでしょうね。この、ご指摘は、私も「経験的?」に、同様に思います。そういう質問も多いものです。ただし、私個人は、同様のものは見たことがありますが、具体的にどうするかは知りません。 こういうのは、質問者様の思いつきではなくて、既存の、ある分野の一定の測定方法と表記方法だと思います。歴史的?に多くの人がやってきたはずです、そういう方式は、その分野にいないものは他人には伝わらないのです。データは、計測器からで、DDEでExcelに入れているものではないでしょうか? ざっと質問内容をみた感じでは、本物の経験者に遭わない限りは、ここでは、早急な解決する可能性は低いと思います。専門掲示板はいくつもありますが、本当の経験者に出会うことは少ないです。 分かる人は、実際に取り組んだ「経験」がある人だと思います。どこかで、じっくりと取り組まないと、経験のないものは解決しないのです。私個人としても、本格的に取り組んだことがないからです。 基本的なことですが、以下のことさえ分かりません。 添付の図の青い○の中の変化の増減の最大値の範囲内の、最大値と最小値のことですか? それとも、単に、増加・減少の反転するところでしょうか? 私の見たことがあるのは、前者です。 I列の最初の最大値の同じ行(B列)に"+1"、最小値の同じ行(B列)に >10回または、5回の各繰り返し点(最大・最小)を抽出し、以下の値を追記したい。 こういう書き方ですと、私はさっぱり分かりません。10とか5とか、どこで出てくるのでしょうか。波にサイクルがあって、そのサイクルの中の最大・最小でチェックを量るわけではありませんか?

1qazwe
質問者

お礼

Wendy02さん回答ありがとうございます。 本当に説明不足で申し訳ありません。 添付頂いた、最大値はあっておりますが、最小値が異なります。 負の値もありますので、常に負の値での最大=最小値となります。 グラフにすると、X軸=セルI列 Y軸=セルG列です。 繰り返しのループを画きます。 X(セルI)増加なら基本的にはY(セルG)も増加して、セルGが最大で1回目(+1)の正の折り返して点。この点を以降は、セルI、セルGも基本的に減少し、負の値での最小値で1回目(-1)の負の折り返し。 (基本的増加、減少と申してますが、隣接の値では増加したり減少したりしています。) この繰り返しループが10回や5回などの場合がある事を意味してます。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >第1象限から始まり、第4象限→第3象限→第2象限→第1象限に戻る。これが、1ループであり、このループが10回や5回繰り返しがあります。 計測器の物理的な現象から取り出したものではないということでしょうか。ここのカテゴリで、そのような質問は100%の解決したという覚えがありませんので、これ以上、やり取りが無駄だと思いましたら、遠慮なさらずに締めてくださって構いません。 残念ながら、こちらでは、具体的にどうするということは、これまでの質疑応答の情報では不可能です。 第1象限から時計回りで回るということになるのでしょうけれども、x値もy値も、負が存在するということです。具体的に、表の数値の列でx軸とy軸が、それぞれどこを指すかは分かりませんが、おそらく、第1象限が最大値で、第3象限に最小値が存在していると考えるとしたら、x値とy値、両方が正に換わるところと、x値とy値、両方が負に換わるところ、つまり、x * y >0 をリスト化して、「正」に反転した範囲に、MAX と MINを取れれば出来るように思います。 これは、関数で十分に可能だと思います。

1qazwe
質問者

お礼

Wendy02様 大変連絡遅くなり申し訳ありません。 完全ではありませんが、進歩しました。 ありがとうございます。 また、お尋ねするかもしれませんが。 いろいろお世話になりました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 失礼ですが、同じ内容を書かれても、説明にはならないと思います。 まず、全体的な部分から説明し、個々に、その内容を説明していただかないと、理解しにくいのです。端的に説明するなら、今のお仕事自体を言ったほうが早いですね。そのものズバリの回答が得られることがあります。 公開しにくい内容だったら、それも構わないのですが、おそらく、X軸は、時間ではありませんか?その程度は説明してくださらないと、話にはならないと思います。だから、データは、時系列で取得しているものだと想定します。 それと、現行の内容(1-17)では、繰り返しのループになっているわけではありません。しかし、それ自体が「ループ」の繰り返しのように受け取れてしまいます。ここに足らない情報としては、「ループ」とは何かということです。 例えば、サインウェーブのように、0から正の最大値に向かい、そして0を通り、負の最小値に向かうということではありませんか?そういうことは書かれていないようです。それを何度も繰り返しているわけで、その正負の振幅の中での最大・最小の値に対するカウントを取るというようなことではありませんか? I列の値が、I1-- 0.32, I17-0 ですから、おそらく、その後に、再び増加する傾向にあるのだと思います。その中の、最大値-最小値のカウントでしょうか? もし、そうだったら、0 ~0 もしくは、0に近い数値を、INDEX 関数とMATCHを組み合わせて、その区間を取れたはずです。その区間を取って、最小、最大を取り、それを、それぞれカウントすればよいです。ひとつで取れない場合は、その横計できれめればよいのではないでしょうか。 >最小値が異なります。 具体的な例を示されたほうがよいと思います。違うからやり直してこいというのは、社員ではないですから通用しません。「最小値は異なります」では、一体どこだろうか、と首をひねるだけです。私(回答者として)には、ひとつのループ自体が何か分かりません。 もし、細かい正負の振幅のないデータだったら、#2のグラフの中では、正負に関係なくピークは、x軸のx=16になるのではないかと思います。 少なくとも、ひとつのループをグラフで描かせるぐらいのデータを出すか、図で示すかして、それを元に説明して、最小値と最大値を示しても損はないと思います。こちらが、当初考えたのには、そういう考えになるプロセスや経験に基づいて書いています。 どうか、掲示板での上手な利用法を考えながら、ご説明くださるようにお願いします。

1qazwe
質問者

お礼

Wendy02様 度々ご指摘ありがとうございます。こちらの説明力、不足申し訳ありません。 <おそらく、X軸は、時間ではありませんか? X軸は、変形量となります。 <「ループ」とは何かということです。 現在まで、座標平面上の第1象限しかありませんでした。説明不足を添付により補填します。今後、座標平面上の第2~4象限が存在します。 示した座標平面はかなり簡略化して画いています。 第1象限から始まり、第4象限→第3象限→第2象限→第1象限に戻る。これが、1ループであり、このループが10回や5回繰り返しがあります。 説明不足の状態でご回答頂きましてありがとうございました。

1qazwe
質問者

補足

添付

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

情報が少なすぎるので、考え方のみ。 質問文中の「最大」「最小」は変化率の極地ということでよいのですよね? もしそうであれば、前後の変化率をみて、(増・減)になっていれば質問者の言う「最大」、(減・増)なら「最小」とすればよい。 基本的にはこれでよいのでしょうが、 >I列が同じ場合、O列→H列→G列の順に最大値と最小値を判断する。 他の列を見たときにそれぞれが(増・増)、(減・減)とかなっていたらどうするのか? I列を3行に拡張して(増・等・減)のときに、O列が(減・減・増)なら「最大」なのか「最小」なのか?(そもそもI列は前後の3行の変化率だけみればよいのか、もっと拡張してみるのか?) 列数が多くなればこれらの組み合わせが複合化するので、それぞれどの様に判定するのか? などなど、判定条件が不明な部分が多すぎるので、これ以上はなんとも書きようがありません。 関数で求めるなら、(多分)条件が複雑でしょうから、作業列(例えば差分を求めておくなど)をいろいろ設けて、結果を求める方法が良さそう。 マクロならそのまま計算すればよい。 いずれにしろ、判定条件をいかに簡明に表現できるかが、作成の手間と間違いの混入を減らす鍵になるでしょう。 それをできるのは、内容を知っている質問者様だけです。

1qazwe
質問者

お礼

fujiiiin様早い回答ありがとうござます。 説明不足で申し訳ありません。 >「最大」「最小」は変化率の極地   に関しては、基本あっていますが、常にそうとは限りません。 セルI1=0.32、I2=0.33、I3=0.3でセルI2変化率の極地で判断した場合には、セルI2が最大値となるよですが、今回求めているのは、セルI2ではなくセルI5が最大値となります。 前後だけの変化率の判定ではなく、任意の範囲についての判定となります。十数行程度の隣接した値は、少なくとも多少の増・減を繰り返しています。増・減を繰り返していますが、大きく見ると減少または、増加となっています。このような状況の中での最大値・最小値の抽出です。 >>I列が同じ場合、O列→H列→G列の順に最大値と最小値を判断する。  今回例示したものでは、セルI5=0.34、セルI6=0.34で同じ値ですが、この2つのO列を単純に比較して値が大きい5行目が最大となります。同様にO列が同じ値の場合には、H列での単純な大小の比較です。

関連するQ&A

  • 条件に合う最大・最小

    エクセル 条件に合う最大 最小 について このような感じです。 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列)に最大・最小等を追記したい。 行で単純に順次値を比較する方法はないのでしょうか? 解決法を教えて頂きたいのですが、宜しくお願いします。

  • エクセルで指定範囲の最大値・最小値を求めたい

    エクセルで、A列、B列、C列・・・にそれぞれ100個ずつ数値データがあります。 各列で1番上のデータからn番目のデータまでの範囲の最大値・最小値と、 n+1番目のデータから100番目のデータまでの範囲の最大値・最小値をそれぞれ求めたいのです。 nの値は列ごとに異なっており、例えばA列のn値は[A105]のセルに記入されています。 [A102]=40のとき、 =MAX(A2:A40) =MAX(A41:A101) などと個別に範囲指定をせずに、[A105]の値を引用して最大値・最小値を求めるにはどうすればいいでしょうか。

  • エクセルの最大値と最小値に色をつける方法について教えてください。

    こんちには。 エクセルの最大値と最小値に色をつける方法を教えてください。 列でなく行でしたいのですが、なかなか思うようにできません。 他の質問も見て、条件付き書式を使うのはわかっているのですが…。 例えば、B3からH3の最大値を赤、最小値を青にしたいのですが、 複写?をすると同じ数字がずらーっと並んでしまうのです。 そのまま下のB4からH4、またその下に…と複写もできる最大値と最小値の色のつけ方を教えてください。 よろしくおねがいします。

  • セル内で変化する値の最大値、最小値を抜きだす。

     初めまして、よろしくお願いします。  セル内でランダムに変化させる値の最大値と最小値を抜き出すマクロを教えていただきたいと思います。  セルD10からD20まで、セルおのおのランダムに変化させていきます。そのセルごとで、表示された最大値の値をF10からF20に、最小値をH10からH20へ抜き出していきたいと思います。 セルが変化した場合に実行する Private Sub Worksheet_Change(ByVal Target As Range) を使用し、FやHの数値と比べて、最大値、最小値の条件が合えばコピーして抜き出すやり方だと思います。他のやり方が有れば、他の方法でもかまいません。  他のセルには他のデーターが入っています。  当方初心者ですので、応用が利くように説明していただければありがたいと思います。(おのおの変化するセルがD10からD30へ範囲の拡大した場合の説明。位置がD列からE列、F列列からG列、H列からJ列へと変化した場合の説明、セルD10からD20まで、D列ですが、ランダムに変化するセルがI10からR10の行へ、同様に抜き出す最大値がI15からR15行へ、最小値がI18からR18へ、列から行へ、変化できるような説明)  解る方、よろしくお願いします。

  • エクセル:最大値の取得と欠番の一覧表示

    お世話になります。 A列に場所名 B列には棚の番号(または名称) C・D列には数字が入っています。 A・B・C列の並びが一つの単位になり、同じ並びのものが複数存在します。 そこで、E・F・G列にA・B・C列の並びで重複するのもを省いたものを表示したいのです。 さらにH列には対応するD列の最大値を表示させたい。 B列は数字だけでなく文字も存在します。 例えば A  B  C  D 倉庫 12  1  1 倉庫 12  1  15 倉庫 12  2  5 倉庫 12  2  21 書庫  5  3  1   の場合、1行目のE・F・G・H列は 倉庫 12  1  15 2行目のE・F・G・H列は 倉庫 12  2  21 3行目のE・F・G・H列は 書庫 5   3  1 となるようにしたい。 以上が最低限やりたいことですが、ピボットテーブルの機能を使いなんとか出来ました。 本当にやりたいことは I列に欠番の数を、J列より右に欠番の一覧を表示させたい。1行目のI列は 1と15→つまり2~14が欠番となり13を表示、 2行目のI列は5と21→1~4と6~20までの19を表示させる。3行目は1しかないので 0と表示する。 そしてJ列より右の列に、1行目なら2~14まで連続して表示。(J列が2、K列が3・・・) 2行目ならJ列が1、K列が2・・・、N列が6、O列が7・・・というように。 3行目は1だけで欠番がないのでなにも表示しない。 ややこしいですがよろしくお願いします。 マクロでも計算式でも構いません。欠番は1000を超えることはないので1000列分くらい計算式を入れておくというものでもOKです。

  • 表中から最大値と最小値の見出しを求める方法を教えて

    エクセルで作成した表があります。 表中から行の最大値と最小値の列見出しを求める方法を教えてください。 表は、行に1から1000、列に(1)~(10)とそれぞれ見出しをつけ、表の中には1.000から1.500のランダムな数字があります。 行の番号をB2セルに入れると最大値と最小値の列の見出し{例えば“(5)”というように…)を求めたいのです。行の数字は複数同じ値がある場合もあります。 良い方法がありましたら、教えてください。 よろしくお願いします。

  • エクセルを用いた計算についてです

     こんばんは  いつもお世話になっております。  下記画像にもございますが、 ・B2の値をG2に ・B2から9行目にあたるE11の値をJ2に ・画像には載せておりませんが、C2からC11の範囲内の最大値をH2に ・D2からD11の範囲内の最小値をI2に  代入したいと思っています。  つまり、各10行内での始値、終値、最大値、最小値を次々と計算し、値をGからJ列に代入していきたいと思っております(すなわち、1分足から10分足への変換でございます)。  なお、10,000行以上もございますため、手計算ではほぼ不可能な状況にございます。  もし、効率的な求め方がございましたならば、ご教示いただきますれば、幸甚に存じます。  それでは、よろしくお願い申し上げます。

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

    以下のように、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が更新されるようにしたい。) 恐れ入ります。エクセルに詳しい方、なにとぞご教示くださいますようお願いいたします。

  • Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法

    Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法 Excelで関数を使って「ある範囲内で条件を満たす最小の列を返す」 というセルの作成方法を教えていただけませんか? 例えばA1からJ1の1行に 0 0 0 1 2 1 3 6 0 0 という数値が入力されているとします。 この10個のセルを左から順に「セル内の値>0となる」という条件に合うか調べた場合、 何列目に条件を初めて満たす事ができるかを返すセルを作りたいのです。 この場合「セル内の値>0」の条件を満たす最小の列のセルは、 「1>0」となるセルD1となり、左から4列目なので 「4」 を返したい。 出来れば「ある範囲内で条件を満たす最大の列を返すセル」の作成法も教えていただけませんか? (1)の例の場合「セル内の数値>0」の条件を満たす最大の列のセルは、 「6>0」となるセルH1となり、左から8列目なので「8」を返すようなセルを作りたい。 複数のシートにデータがあり、それらのシートに一括でこのセルを作りたいため、 補助となる行を入れるのはよいのですが、 行列を入れ替えるような操作がいらない方法が知りたいです。 どうかよろしくお願いします。

  • エクセルで最大値最小値を残して間引きをしたい

    エクセル2000を使用しています。 電圧と温度の数値データが100列×20万行のCSVで保存してあります。 このデータを解析の為エクセルで読み込みたいのですが、 データの行数が多い為読み込めません。 そこでデータを間引いて取り込みたいのですが、過去ログやWEBには 「数行毎に削除して取り込み」しか見つけられませんでした。 これではピーク値を削除してしまう可能性があるので、 10行毎に最大値と最小値を残して削除をしたいです。 例 1 7 2 8 3 9 4 10 5 11 6 12 これを3行ごとに間引き 1 7 (1~3行の最小値) 3 9 (1~3行の最大値) 4 10 (4~6行の最小値) 6 12 (4~6行の最大値) のように間引きをしたいです。 大きなCSVを複数のシートに分割して読み込むマクロは組めたので、 CSV読み込みからでは無く、エクセル上で上記のように間引きが 行えるだけでも大変助かります。 よろしくお願いします。

専門家に質問してみよう