• ベストアンサー

同名の値の最小値、最大値を求めるには?

    A列   B列 1行  りんご   3 2行  りんご   5 3行  なし    2 4行  なし    3 5行  なし    1 6行  なし    7 7行  みかん  2 8行  みかん  2 9行  みかん  3 上のようなデータで、りんご、なし、みかんについてそれぞれの最小値・最大値を別のセルに表示させるには、どんな関数を使ったらいいでしょうか。応用したい実際のデータは、A列の種類が200ほど、それぞれの種類のデータ数は1~80くらいあります。 よろしくお願いします。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

添付図のように、 D2:D4に、「りんご、なし、みかん」といれます。 E2に、 =MAX(IF($A$1:$A$11=D2,$B$1:$B$11,"")) といれて、Ctrl+Shift+Enterを押します。数式の前後に{ }がついて配列数式になります。 E3、E4にフィルドラッグします。最大値が入ります。 F2に、 =MIN(IF($A$1:$A$11=D2,$B$1:$B$11,"")) といれて、Ctrl+Shift+Enterを押します。数式の前後に{ }がついて配列数式になります。 F3、F4にフィルドラッグします。最小値が入ります。 実際の表に合わせて範囲を調節してください。

torisorakaze
質問者

お礼

とても簡単明解な数式で、試してみましたら2500ほどのデータをすっきり集計してくれました。ありがとうございました。

その他の回答 (4)

回答No.5

ピボットテーブルが良さそうですが、集計機能もありますよ!って回答。 0. 見出し行を挿入し、A列で並べ替え 1. データ - 集計  グループの基準 : 見出し  集計の方法 : 最小値  集計するフィールド [レ]数値 添付図参照 単発? で良いなら データベース関数を使うってのもありだと思います D1セル 見出し D2セル りんご =DMAX(A:B,2,D1:D2) =DMIN(A:B,2,D1:D2)

torisorakaze
質問者

お礼

私にとって新しい方法を教えていただきありがとうございます。いろいろな場面で利用していきたいと思います。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

No3の回答に間違いがありましたので訂正します。 G2セルの最小値は以下の数式になります。 =MIN(INDEX(($A$2:$A$1000<>$E2)*1000+$B$2:$B$1000,))

torisorakaze
質問者

お礼

わざわざ二度の回答をしていただきありがとうございます。最大値は正確に表示できました。最小値がデータ範囲をデータ数以内にしないと正確に表示してくれませんでした。2700強のデータがありましたので、3000までを範囲としましたらすべて3000の値になってしまいました。データ数と同じかそれ以下の範囲に設定した場合は正確に表示されました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

E2セル以下に果物名が表示されているなら、F2セル(最大値)およびG2(最小値)セルに以下の式を入力し下方向にオートフィルコピーしてください。 F2セル: =MAX(INDEX(($A$2:$A$1000=$E2)*$B$2:$B$1000,)) G2セル: =MIN(INDEX(($A$2:$A$1000=$E2)*$B$2:$B$1000,))

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

こんばんは! 一例です。 >実際のデータは、A列の種類が200ほど、それぞれの種類のデータ数は1~80くらいあります。 とありますので、とりあえず2000行まで対応できる数式にしてみました。 ↓の画像のようにC列を作業用の列として使用します。 (A列データを重複なしに表示するため) C2セルに =IF(COUNTIF(A$2:A2,A2)=1,ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下へコピー! (A・B列の途中に空白がない場合はC2セルのフィルハンドルでダブルクリック) そしてE2セルに =IF(COUNT(C:C)<ROW(A1),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) F2セルに =IF(E2="","",MAX(IF(A$1:A$2000=E2,$B$1:$B$2000))) G2セルに =IF(E2="","",MIN(IF(A$1:A$2000=E2,B$1:B$2000))) F2・G2セルは良セルとも配列数式になりますので、 Shift+Ctrl+Enterで確定します。 数式の前後に{ }マークが入り配列数式になります。 最後にE2~G2セルを範囲指定 → G2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 ※ 配列数式はPCにかなりの負担をかけます。データ量が大量にある場合は もう1列作業列を追加して、配列数式を使用しない方法が良いと思います。m(_ _)m

torisorakaze
質問者

お礼

さっそく回答していただきありがとうございます。 わたしの知らない関数もありましたが、なんとか理解できました。 配列数式がPCに負担が大きいことも注意してやってみようと思います。

関連するQ&A