- ベストアンサー
エクセルの関数について
エクセルの関数について ある条件での最大値、最小値を求める関数はないですか。 表のシートとは別シートに一覧として出力したいのですが。 例 A列 B列 支店名 金額 この場合の支店別の最大値、最小値を求める関数はないですか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
データが多い場合には配列数式やSUMPRODUCT関数を使いますとどうしても動作が鈍くなります。 できるだけ分かりやすく簡単な方法がよいでしょう。次のように対応してはどうでしょう。 シート1のA1セルに支店名、B1セルに金額の文字があり、データは2行目から下方にあるとします。 初めにA列を最重点に支店名を例えば昇順などで並べ替えをしておきます。 作業列としてC2セルに次の式を入力します。 =IF(A2<>A3,MAX(C$1:C1)+1,"") D1セルには最大値、E1セルには最小値と入力します。 D2セルには次の式を入力します。 =IF($C2<>"",IF(COLUMN(A2)=1,MAX(INDEX($B:$B,MATCH($A2,$A:$A,0)):$B2),IF(COLUMN(A2)=2,MIN(INDEX($B:$B,MATCH($A2,$A:$A,0)):$B2),"")),"") D2セルを選択したのちにE2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 シート2にお求めの表を作ることにしてA1セルには支店名、B1セルには最大値、C1セルには最小値とそれぞれ入力します。 A2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$C:$C,ROW(A1))=0,"",INDEX(Sheet1!$A:$A,MATCH(ROW(A1),Sheet1!$C:$C))) B2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(COUNTIF(Sheet1!$C:$C,ROW(A1))=0,COLUMN(A1)>2),"",INDEX(Sheet1!$D:$E,MATCH(ROW(A1),Sheet1!$C:$C,0),COLUMN(A1))) これでシート2には支店名とその最大金額と最少金額が表示されます。
その他の回答 (3)
- web2525
- ベストアンサー率42% (1219/2850)
補足: 下記計算式は金額がマイナスになっていない場合のみ有効です
- web2525
- ベストアンサー率42% (1219/2850)
こんな感じかな? 最大値 =SUMPRODUCT(MAX((支店範囲=支店名)*(金額範囲))) 最小値 =SUMPRODUCT(SMALL((支店範囲=支店名)*金額範囲,COUNTIF(支店範囲,"<>"&支店名)+1)) 配列計算ではないのでそのまま確定で 支店名には表示したい支店名が入力されたセルを指定してください
お礼
ありがとうございます。
- keithin
- ベストアンサー率66% (5278/7941)
D1に東京支店などと置いて =MAX(IF(A1:A100=D1,B1:B100)) =MIN(IF(A1:A100=D1,B1:B100)) をそれぞれセルに記入してコントロールキーとシフトキーを押しながらEnterで入力するなど。
お礼
ありがとうございます。
お礼
ありがとうございます。