• ベストアンサー

EXCELで条件あてはまるセルの最大最少値を求める

下記のような一覧表から A 10 B 20 B 15 B 30 C 50 C 40 以下のような表を作りたいのですが。 ABCは手動で入力し、最大値・最小値は関数で求めたいです。   最大値  最小値 A   10    10 B   30    15 C   50    40 関数だけでは難しいでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

関数では、配列数式になってしまう。 MAXIF関数は無い。 Googleで「エクセル MAXIF」で照会してみること。 ーーー それでVBAで考えた(お呼びではないかもしれない。参考に読んでくれれば良い) 例データ A,B列 A 8 B 20 B 5 B 30 C 45 C 40 B 31 B 35 A 12 A 14 D 34 D 44 D 51 A列のダブリ漏れの無い1組をD列に作る。 操作で、データーフィルターフィルタオプションの設定ー重複するレコードは無視するで作れる(2003までの操作)。 (質問にはエクセルのバージョンは書いてするものだ) D,E、F列 A 14 8 B 35 5 C 45 40 D 51 34 標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d x = Range("D:D").Find(Cells(i, "A")).Row If Cells(x, "E") < Cells(i, "B") Then Cells(x, "E") = Cells(i, "B") '最大値書き換え End If If Cells(x, "F") = "" Then Cells(x, "F") = Cells(i, "B") '最小値書き換え Else If Cells(x, "F") > Cells(i, "B") Then Cells(x, "F") = Cells(i, "B") ''最小値書き換え End If Next i End Sub 実行すると結果は 上記E,F列のようになる。 データを1回だけ上から下へ読み終わると、結果が出る、という(有名な)アルゴリズムで、最少時間だろう。

ff11111111
質問者

お礼

わざわざプログラムの作成ありがとうございました。 数としては100件程度のものでしたので、手作業で処理することにしました。 ありがとうございます。

その他の回答 (1)

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

添付図: B列にキチンと漏れなくデータが記入されているという前提を守れるなら E2: =MAX(IF($A$1:$A$10=D2,$B$1:$B$10)) と記入してコントロールキーとシフトキーを押しながらEnterで入力 下にコピー F2: =MIN(IF($A$1:$C$10=D2,$B$1:$C$10)) と記入してコントロールキーとシフトキーを押しながらEnterで入力 下にコピー

ff11111111
質問者

お礼

やってみましたが、うまく動きませんでした。 ありがとうございました。

関連するQ&A