- ベストアンサー
同名の値の最小値、最大値を求めるには?
A列 B列 1行 りんご 3 2行 りんご 5 3行 なし 2 4行 なし 3 5行 なし 1 6行 なし 7 7行 みかん 2 8行 みかん 2 9行 みかん 3 上のようなデータで、りんご、なし、みかんについてそれぞれの最小値・最大値を別のセルに表示させるには、どんな関数を使ったらいいでしょうか。応用したい実際のデータは、A列の種類が200ほど、それぞれの種類のデータ数は1~80くらいあります。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
- MackyNo1
- ベストアンサー率53% (1521/2850)
No3の回答に間違いがありましたので訂正します。 G2セルの最小値は以下の数式になります。 =MIN(INDEX(($A$2:$A$1000<>$E2)*1000+$B$2:$B$1000,))
お礼
わざわざ二度の回答をしていただきありがとうございます。最大値は正確に表示できました。最小値がデータ範囲をデータ数以内にしないと正確に表示してくれませんでした。2700強のデータがありましたので、3000までを範囲としましたらすべて3000の値になってしまいました。データ数と同じかそれ以下の範囲に設定した場合は正確に表示されました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 >実際のデータは、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
お礼
さっそく回答していただきありがとうございます。 わたしの知らない関数もありましたが、なんとか理解できました。 配列数式がPCに負担が大きいことも注意してやってみようと思います。
お礼
とても簡単明解な数式で、試してみましたら2500ほどのデータをすっきり集計してくれました。ありがとうございました。