• 締切済み

条件に合う最大・最小

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

みんなの回答

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

No.2です! たびたびごめんなさい。 投稿した後で気づいたのですが・・・ 質問内容では各列のデータの数値にあまり差がないので 前回の回答でなんとか表示できたと思いますが、 もし下位の数値が大きくて上位の優先順位を逆転する可能性がある場合は 倍数を優先順位の高い物ほど大きくしないと間違った表示になるような気がします。 例えば、極端に言えば I列×1000 O列×100 H列×10 G列×1(そのまま) のような感じで・・・ どうも何度も失礼しました。m(__)m

mixi99
質問者

お礼

ご回答ありがとうございました。 追加でのご回答まで頂きありがとうございます。 また、わかりやすく添付までして頂き大変ありがとうございます。 データーは計測した値でありまして、その都度オーダーが異なります。 各列それぞれについて、予め最大・最小を求めておきそれを元に、 重み付けを行えば良いのですが、この作業も簡略化したくてご質問しました。後付の説明になって大変恐縮ですが、tom04様と同様な方法は考えていましたが、単純に行での比較が出来ないかと思い質問した次第であります。(現状できないようですが) ご回答に感謝します。

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

こんばんは! 参考になるかどうか分かりませんが・・・ 無理矢理って方法です。 優先順位が I → O → H → G という事なので ↓の画像のように作業列を使わせてもらい 点数計算のような感じで、優先順位の高い順に元の数値を 4倍 3倍 2倍 1倍して、それを合計し、得点が一番高い行に「最大値」 一番低い行に「最小値」と表示させるのはどうでしょうか? Q2セル =I2*4 R2セル =O2*3 S2セル =H2*2 T2セル =G2 U2セル =SUM(Q2:T2) としてQ2~U2セルを範囲指定し、オートフィルで下へコピーします。 この数値を元にA列に最大値と最小値を表示させるために A2セル =IF(U2=LARGE($U$2:$U$7,1),"最大値",IF(U2=SMALL($U$2:$U$7,1),"最小値","")) とし、オートフィルで下へコピーまたはオートフィルマーク(+)のフィルハンドルでダブルクリック! 何とかこれで表示できないでしょうか? かなり回りくどい方法ですが、 的外れだったり、他に良い方法があれば読み流してくださいね。m(__)m

回答No.1

列に優先順位があるのなら、重み付けは必須です。数値の桁数がか なりバラついて重み付けが大変なら、数値自体に重み付けをするの ではなく順位に重み付けするといいでしょう。 たとえば、データ数が2桁までなら、順位は2桁にしかなりません。 =RANK(I1,I:I)+RANK(O1,O:O)*0.01+RANK(H1,H:H)*0.0001+RANK(G1,G:G)*0.000001 数値のバラつきに関わらず重み付けは2桁で充分ですね。 で、上記の式がE列にあるとすると、A列には =IF(E1=MIN(E:E),"最小値",IF(E1=MAX(E:E),"最大値","")) なんて感じで。

mixi99
質問者

お礼

ご回答ありがとうございます。 RANK関数参考になりました。 ありがとうございました。 以下再確認です。 >たとえば、データ数が2桁までなら、順位は2桁にしかなりません。 =RANK(I1,I:I)+RANK(O1,O:O)*0.01+RANK(H1,H:H)*0.0001+RANK(G1,G:G)*0.000001 数値のバラつきに関わらず重み付けは2桁で充分ですね。 上記に関しまして、データー数は10000桁なので、上記式の 重み付けを1/100倍とした数式になります(?) >で、上記の式がE列にあるとすると、A列には =IF(E1=MIN(E:E),"最小値",IF(E1=MAX(E:E),"最大値","")) RANK関数で、降順により順位求めているので、 MAX=最小値、MIN=最大値(?) 欲を言えば、1行完結が理想ですが、 1列追加で順位付け→最大・最小の判定形式がおとしどころですかねぇ? 大変ありがとうございました。

関連するQ&A

専門家に質問してみよう