- ベストアンサー
エクセルの任意範囲の最大値最小値の取得について
エクセルデーター任意範囲の最大値と最小値の取得方法について教えて下さい。 例は以下の形式です。 //////////////////////////////////////////////////////////////// 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いかなる方法でもかまわないので、早急に処理できる良い方法はないでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 #1様の >内容を知っている質問者様だけです。 まあ、その通りでしょうね。この、ご指摘は、私も「経験的?」に、同様に思います。そういう質問も多いものです。ただし、私個人は、同様のものは見たことがありますが、具体的にどうするかは知りません。 こういうのは、質問者様の思いつきではなくて、既存の、ある分野の一定の測定方法と表記方法だと思います。歴史的?に多くの人がやってきたはずです、そういう方式は、その分野にいないものは他人には伝わらないのです。データは、計測器からで、DDEでExcelに入れているものではないでしょうか? ざっと質問内容をみた感じでは、本物の経験者に遭わない限りは、ここでは、早急な解決する可能性は低いと思います。専門掲示板はいくつもありますが、本当の経験者に出会うことは少ないです。 分かる人は、実際に取り組んだ「経験」がある人だと思います。どこかで、じっくりと取り組まないと、経験のないものは解決しないのです。私個人としても、本格的に取り組んだことがないからです。 基本的なことですが、以下のことさえ分かりません。 添付の図の青い○の中の変化の増減の最大値の範囲内の、最大値と最小値のことですか? それとも、単に、増加・減少の反転するところでしょうか? 私の見たことがあるのは、前者です。 I列の最初の最大値の同じ行(B列)に"+1"、最小値の同じ行(B列)に >10回または、5回の各繰り返し点(最大・最小)を抽出し、以下の値を追記したい。 こういう書き方ですと、私はさっぱり分かりません。10とか5とか、どこで出てくるのでしょうか。波にサイクルがあって、そのサイクルの中の最大・最小でチェックを量るわけではありませんか?
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >第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を取れれば出来るように思います。 これは、関数で十分に可能だと思います。
お礼
Wendy02様 大変連絡遅くなり申し訳ありません。 完全ではありませんが、進歩しました。 ありがとうございます。 また、お尋ねするかもしれませんが。 いろいろお世話になりました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 失礼ですが、同じ内容を書かれても、説明にはならないと思います。 まず、全体的な部分から説明し、個々に、その内容を説明していただかないと、理解しにくいのです。端的に説明するなら、今のお仕事自体を言ったほうが早いですね。そのものズバリの回答が得られることがあります。 公開しにくい内容だったら、それも構わないのですが、おそらく、X軸は、時間ではありませんか?その程度は説明してくださらないと、話にはならないと思います。だから、データは、時系列で取得しているものだと想定します。 それと、現行の内容(1-17)では、繰り返しのループになっているわけではありません。しかし、それ自体が「ループ」の繰り返しのように受け取れてしまいます。ここに足らない情報としては、「ループ」とは何かということです。 例えば、サインウェーブのように、0から正の最大値に向かい、そして0を通り、負の最小値に向かうということではありませんか?そういうことは書かれていないようです。それを何度も繰り返しているわけで、その正負の振幅の中での最大・最小の値に対するカウントを取るというようなことではありませんか? I列の値が、I1-- 0.32, I17-0 ですから、おそらく、その後に、再び増加する傾向にあるのだと思います。その中の、最大値-最小値のカウントでしょうか? もし、そうだったら、0 ~0 もしくは、0に近い数値を、INDEX 関数とMATCHを組み合わせて、その区間を取れたはずです。その区間を取って、最小、最大を取り、それを、それぞれカウントすればよいです。ひとつで取れない場合は、その横計できれめればよいのではないでしょうか。 >最小値が異なります。 具体的な例を示されたほうがよいと思います。違うからやり直してこいというのは、社員ではないですから通用しません。「最小値は異なります」では、一体どこだろうか、と首をひねるだけです。私(回答者として)には、ひとつのループ自体が何か分かりません。 もし、細かい正負の振幅のないデータだったら、#2のグラフの中では、正負に関係なくピークは、x軸のx=16になるのではないかと思います。 少なくとも、ひとつのループをグラフで描かせるぐらいのデータを出すか、図で示すかして、それを元に説明して、最小値と最大値を示しても損はないと思います。こちらが、当初考えたのには、そういう考えになるプロセスや経験に基づいて書いています。 どうか、掲示板での上手な利用法を考えながら、ご説明くださるようにお願いします。
お礼
Wendy02様 度々ご指摘ありがとうございます。こちらの説明力、不足申し訳ありません。 <おそらく、X軸は、時間ではありませんか? X軸は、変形量となります。 <「ループ」とは何かということです。 現在まで、座標平面上の第1象限しかありませんでした。説明不足を添付により補填します。今後、座標平面上の第2~4象限が存在します。 示した座標平面はかなり簡略化して画いています。 第1象限から始まり、第4象限→第3象限→第2象限→第1象限に戻る。これが、1ループであり、このループが10回や5回繰り返しがあります。 説明不足の状態でご回答頂きましてありがとうございました。
補足
添付
- fujillin
- ベストアンサー率61% (1594/2576)
情報が少なすぎるので、考え方のみ。 質問文中の「最大」「最小」は変化率の極地ということでよいのですよね? もしそうであれば、前後の変化率をみて、(増・減)になっていれば質問者の言う「最大」、(減・増)なら「最小」とすればよい。 基本的にはこれでよいのでしょうが、 >I列が同じ場合、O列→H列→G列の順に最大値と最小値を判断する。 他の列を見たときにそれぞれが(増・増)、(減・減)とかなっていたらどうするのか? I列を3行に拡張して(増・等・減)のときに、O列が(減・減・増)なら「最大」なのか「最小」なのか?(そもそもI列は前後の3行の変化率だけみればよいのか、もっと拡張してみるのか?) 列数が多くなればこれらの組み合わせが複合化するので、それぞれどの様に判定するのか? などなど、判定条件が不明な部分が多すぎるので、これ以上はなんとも書きようがありません。 関数で求めるなら、(多分)条件が複雑でしょうから、作業列(例えば差分を求めておくなど)をいろいろ設けて、結果を求める方法が良さそう。 マクロならそのまま計算すればよい。 いずれにしろ、判定条件をいかに簡明に表現できるかが、作成の手間と間違いの混入を減らす鍵になるでしょう。 それをできるのは、内容を知っている質問者様だけです。
お礼
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列での単純な大小の比較です。
お礼
Wendy02さん回答ありがとうございます。 本当に説明不足で申し訳ありません。 添付頂いた、最大値はあっておりますが、最小値が異なります。 負の値もありますので、常に負の値での最大=最小値となります。 グラフにすると、X軸=セルI列 Y軸=セルG列です。 繰り返しのループを画きます。 X(セルI)増加なら基本的にはY(セルG)も増加して、セルGが最大で1回目(+1)の正の折り返して点。この点を以降は、セルI、セルGも基本的に減少し、負の値での最小値で1回目(-1)の負の折り返し。 (基本的増加、減少と申してますが、隣接の値では増加したり減少したりしています。) この繰り返しループが10回や5回などの場合がある事を意味してます。