• ベストアンサー

EXCELで、ある値で検索後、最大値を求める方法について

EXCELで、ある値での最大値を求める方法がありますでしょうか?数日考えておりましたが結論はでませんでした。 どなたかヒントだけでも結構ですのでご教授頂けないでしょうか? 下記の場合、   A  B  C  D  E  F  G 1       あ  い         2    1  2  2.1    9.6 3    2  3  5.4    5.6    4    3  4  8.2    5.4    5    4  5  1.9    8.2    6    5  1  7.8    4.5    7    6  1  9.6     .    8    7  2  5.6     .    9    8  5  4.5     .    10    9  3  4.8        .    .  .   .         .    .  .   .         .    .  .   .         3000以上 B列の数値をもとにC列の中で検索させ、いくつか該当するとき、その右側のD列の最大値を求めることができるかどうか。 たとえば、B列の1の場合、C列の中で1が2箇所あり、その右側であるD列の値は7.8と9.6となります。そのうちの最大値は9.6ですので、F列の同行に答えとなる値が入ります。そのようなF列の関数等は無いでしょうか? 当方でもいろいろ調べ、DMAX関数が使えそうですが、B列の値が縦(列)となってる場合はうまくいきませんでした。もしB列の値が、縦(列)ではなく横(行)である場合は、OFFSET関数などと併せてうまくいきますが、最大256列(EXCELの制限)までしか扱えません。 何か方法があればヒントだけでも結構ですのでよろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 とりあえず、配列数式の方法です。 F2に、 =MAX(IF($C$2:$C$10=B2,$D$2:$D$10)) と入力して、[Ctrl]と[Shift]を押しながら[Enter]を押します。 (数式の両端に「{}」が付きます。) これを下の行へコピーします。 データ範囲は適宜変更して下さい。 この配列数式だと、データ行数が多いと処理が重くなります。 マシンスペックにもよりますが、3000行は微妙です。 そこで、B・C・D列が数値であるという条件で、作業列を1列使っての別の方法です。 ただし、D列の値がどんなに大きくても100以下という前提です。 作業列をE列とします。 E2に、 =C2*1000+D2 と入力して、下の行へコピーします。 次に、F2に、 =SMALL(E:E,COUNTIF(C:C,"<="&B2))-B2*1000 と入力して、下の行へコピーします。

george01
質問者

お礼

目から鱗です。「配列数式」なるものが存在することをはじめて知りました。数日間悩んでいたものですから、涙が出るほどうれしかったです。 本当にありがとうございました。

その他の回答 (1)

noname#29107
noname#29107
回答No.2

=MAX((A2=$B$2:$B$100)*($C$2:$C$100)) 配列数式にするために、上記式入力後Ctrl+Shift+Enterを押下 {=MAX((A2=$B$2:$B$100)*($C$2:$C$100))} のように表示されていればOK

george01
質問者

お礼

目から鱗です。「配列数式」なるものが存在することをはじめて知りました。数日間悩んでいたものですから、涙が出るほどうれしかったです。 本当にありがとうございました。

関連するQ&A

  • エクセル関数式により、列の最後尾から2行目の値からの最大値の求め方。

    エクセル関数式により、列の最後尾から2行目の値からの最大値の求め方。  初めまして、よろしくお願いします。      A  B  C  D  E 1    赤  青  黄  緑  黒 2  3    4    1  3  2  0  9 5    9  1  3  4  3 ・    ・  ・  ・  ・  ・ ・    ・  ・  ・  ・  ・   112  4  6  1  9  6 113  7  7  5  8  1 114  6  9  1  3  7    115  7     2  5  0 116  8     0     0  という表があります。 各列の空白、もしくは0の入力されている後の値(A列では8、B列では9、C列では2、D列では5、E列では7)を最後尾とし、そこから2行目の値(A列では6、B列では6、C列では5、D列では8、E列では6)からの列(A列ではA4の1まで、B列ではB4の3まで、C列ではC4の2まで、D列ではD4の0まで、E列ではE4の9まで)の間の値の最大値(A列で、見えている部分のみではA5の9になります)を抜き出すことのできる関数式の方法がありましたら、教えていただきたく。よろしくお願いします。

  • Excel 2007 同じ値の検索

    Excel 2007 同じ値の検索 B列(会社主キー)とC列(会社サブキー)、D列(会社サブキー)、E列(会社サブキー)を比較。 B列と同じキーがあった場合には、A列(check)に1が入り、同じキーがなければ2を入れるように したいです。 B列は一意のキーです。 C、D、E列で同じキーが入っている場合もございます。 どのように解決すればよろしいでしょうか。 マクロ、関数のいずれでもかまいません。 アドバイス頂けますでしょうか。

  • OFFSET,MAX関数併用で値を求める

    OFFSET,MAX関数併用でD1にB列最大値"5"の左にある文字"こ"の値を出したいのですが数式を以下のようにしたのですができません。どなたか関数がわかる方よろしくお願いします。 =OFFSET(ADDRESS(MAX(B1:B9)),0,-1) A B C D 1 あ 1 か 2 い 3 3 う 0 4 え 1 5 お 2 6 か 5 7 き 2 8 く 1 9 こ 4

  • EXCELで重複する値の検索

    EXCELで重複する値を検索して、かつその重複した値と同じ行の隣のセルの値を返すということをしたいのですが、どうすればうまくいきますでしょうか。 具体的には下記のようになります。    A    B   C 1 りんご  A市場 2 みかん  C市場 3 りんご  D市場 4 なし   B市場 5 バナナ  A市場 6 りんご  F市場 上のような表があったとして、A列の重複を検索(この場合はりんごが重複)して、重複した場合はB列の値をC列に返すことをしたいんです。 希望する出力は以下のような形です。    A    B    C  1 りんご  A市場  D市場、F市場 2 みかん  C市場 3 りんご  D市場  A市場、F市場 4 なし   B市場 5 バナナ  A市場 6 りんご  F市場  A市場、D市場 よろしくお願いします。

  • エクセルで、2つの条件に一致する値を返す方法 教えてください

    A B C D E F 1 日付 分数 2 Aさん Bさん Cさん Aさん Bさん Cさん 3 3/2 2/12 3/15 9 10 10 4 3/4 2/12 3/15 2 3 3 5 3/4 2/12 3/15 30 30 30 6 3/3 2/12 3/15 1 1 2 7 3/4 2/12 3/15 3 5 4 8 3/4 2/12 3/15 29 29 29 上記の表より 列A,B,Cは日付 列D,E,Fは分数です ・3行目のG列にD3:F3の範囲で最小値であり、A3:C3の範囲で最新の日付(最大値)である時の 日付を表示したい。 G3のセルを下に引っ張り各行ごとに値を表示したいです。 関数(式)を教えてください。

  • エクセルで文字列の最大値を抽出する方法

    文字列の最大値を抽出したいのですが 4つのセルにA、B、C、Dが入力されている場合の文字列の最大値Dを抽出する関数式を知りたい エクセルヘルプで見るとMAXAとなっていたのですが抽出する答えは”0”となってしまいます。

  • 値が同じセルを検索して該当するものを表示する方法

    セルA1と同じ内容をB列から検索し、同じものが有った場合のCxの値をセルD1に表示する場合、どの関数を使えばよいのでしょうか。 (ここで、B列にはA1と同じ値は1個しかないことを条件としています。) 例えば   A  B  C  D 1 1  0  2 2 2  1  1 3 3  2  0 A1=1  列Bの「1」は B2です。 その場合のC2の値は1  よってD1には「1」を表示させたい。 宜しくお願いします。

  •  エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方

     エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方法。  初めまして。よろしくお願いします。  例) A B C D E F 1赤 2 5 1 2青 9 2 3 青 3黄 1 9 4 黄 4緑 3 4 2 5黒 8 4 9 6紺 2 5 4 紺 7橙 5 1 6 8 9  D列にある値がB列にある値とC列にある値の間に有る場合、A列に有る値をE列に抜き出す(例では2行目、3行目、6行目のDの値がBCの値の間に有るためにEのセルにAの値を表示される)関数式を教えていただきたく、よろしくお願いします。

  • エクセルで最大値を求める

    B列の最大値を求めたいのですが、条件が一つあります。 A列の値が10以下の場合はカウントしないようにしたいのです。 例 A  B 6  20 6  58 12 6 11 3 1  100 この場合求めたい最大値は6になります。 これを既存の関数かユーザー定義関数でやりたいのですが、やり方を教えてください。

  • 関数で、最大値のあるセルの列を表示したい

    エクセルの関数について教えてください。 セルH1に関数を使って、列A、列C、列E、列Gの最大値を出しました。 その下のH2のセルに、関数を使って、列A、列C、列E、列Fの最大値のある列(A,B,C,Dのいずれか)を表記させたいのですが(下記のように)、可能でしょうか?   A B C D E F G H 1 10 ※ 28 ※ 66 ※ 26 99 2 56 ※ 29 ※ 89 ※ 28 A 3 99 ※ 12 ※ 66 ※ 10 (列Hが上記のようになるようにしたいのです。)

専門家に質問してみよう