Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
条件付きで最大値、最小値を求める:Excel関数の技
Home » エクセル関数の技 » 条件付きで最大値、最小値を求める
さまざまな関数を使って条件付きで最大値や最小値を計算する方法を書いています。
このページでは、MAX,MIN,MAXIFS,MINIFS,FILTER,GROUPBY,INDEX,配列数式,SUMPRODUCTといった関数を使っています。
更新:2025/9/26;作成:2009/4/20
単純な最大値と最小値を求める topへ
単純に最大値や最小値を求めるには、MAX関数とMIN関数が使えます。
[例題] 下表の売り上げの最大値と最小値を求めます。
B
C
D
2
月
商品名
売上
3
1月
りんご
9,649
4
1月
みかん
6,183
5
1月
バナナ
4,896
6
2月
りんご
2,249
7
2月
みかん
6,843
8
2月
バナナ
4,478
9
3月
りんご
5,991
10
3月
みかん
6,432
11
3月
バナナ
7,228
12
4月
りんご
3,046
13
4月
みかん
6,297
14
4月
バナナ
5,152
15
最大値
9,649
16
最小値
2,249
[解答例]
最大値は =MAX(D3:D14) とすると 9,649 となります。
最小値は =MIN(D3:D14) とすると 2,249 となります。
Excel for Microsoft365、Excel2024以降のバージョンで使用できるイータ縮小ラムダ を使ってみます。
最大値は =BYCOL( D3:D14 ,MAX) とすると 9,649 となります。
最小値は =BYCOL( D3:D14 ,MIN) とすると 2,249 となります。
条件付きで最大値、最小値を求める topへ
【例題】下表のデータで、みかんの売上の最大値、最小値を求めます。
B
C
D
2
月
商品名
売上
3
1月
りんご
9,649
4
1月
みかん
6,183
5
1月
バナナ
4,896
6
2月
りんご
2,249
7
2月
みかん
6,843
8
2月
バナナ
4,478
9
3月
りんご
5,991
10
3月
みかん
6,432
11
3月
バナナ
7,228
12
4月
りんご
3,046
13
4月
みかん
6,297
14
4月
バナナ
5,152
15
最大値
16
最小値
各商品ごとの最大値、最小値を求める
いろいろな方法で条件付きの最大値、最小値を求めることができますが、MAXIFS関数、MINIFS関数が最もスマートな方法になると思います。
MAXIFS関数やMINIFS関数はExcel for Microsoft 365,Excel2019以降(Excel2021,Excel2024)で使うことができます。
構文は
=MAXIFS(最大範囲,条件範囲,条件,...)
=MINIFS(最小範囲,条件範囲,条件,...)
です。 詳細な使い方は MAXIFS関数の使い方(条件付きで最大値を求める) MINIFS関数の使い方(条件付きで最小値を求める) をご覧ください。
G5セルには =MAXIFS( D3:D14 , C3:C14 , F3 ) と入力しています。
=MAXIFS( D3:D14 , C3:C14 , "みかん" ) でもOKです。
G6セルには =MINIFS( D3:D14 , C3:C14 , F3 ) と入力しています。
=MINIFS( D3:D14 , C3:C14 , "みかん" ) でもOKです。
Excel for Microsoft 365、Excel2021以降ではSpill機能が使えるようになりました。
複数の商品名の最大値や最小値を一つの数式で求めることができます。
商品名はUNIQUE関数で取り出すことができます。
F3セルに =UNIQUE(C3:C14) と入力します。
各商品の最大値は =MAXIFS(D3:D14,C3:C14,F3# ) で求めることができます。
F3# の # はスピルしているセル範囲全体を参照するための演算子で「スピル範囲演算子 」と呼ばれます。
各商品の最大値は =MINIFS(D3:D14,C3:C14,F3# ) で求めることができます。
GROUPBY関数で商品名ごとの最大値と最小値を求めることができます。
=GROUPBY(C3:C14,D3:D14,MAX ,,0)、=GROUPBY(C3:C14,D3:D14,MIN ,,0)
GROUPBY関数の構文は
=GROUPBY(row_fields,values,function,field_headers,total_depth,sort_order,filter_array,field_relationship)
詳細な使い方は GROUPBY関数を使って集計する をご覧ください。
2つの配列を HSTACK関数で列方向に結合 します。
CHOOSECOLS関数で結合した配列の 1,2,4 列のデータを取り出します。
=CHOOSECOLS(
HSTACK( GROUPBY(C3:C14,D3:D14, MAX ,,0) , GROUPBY(C3:C14,D3:D14, MIN ,,0) ) ,
1,2,4 )
FILTER関数を利用する topへ
[Excel for Microsoft365,Excel2021]
FILTER関数はExcel for Microsoft 365、Excel2021以降で使うことができます。
みかんの最大値は =MAX( FILTER(D3:D14, C3:C14="みかん" ) )
みかんの最小値は =MIN( FILTER(D3:D14, C3:C14="みかん" ) )
で求めることができます。
各商品について求める場合 商品名はUNIQUE関数で取り出すことができます。
F3セルに =UNIQUE(C3:C14) と入力します。
FILTER関数で 商品名を条件に一致するデータを配列に取り出し、MAX関数で最大値を計算します。
G3セルには =MAX( FILTER($D$3:$D$14,$C$3:$C$14=$F3) ) と入力しています。
G3:G5セルを選択して、[Ctrl]+[D]でG3セルの数式をG4:G5セルへコピーします。
最小値は =MIN( FILTER($D$3:$D$14,$C$3:$C$14=$F3) ) で求めることができます。
動的配列数式が使用できないExcel2019以前のバージョンでは
最大値は =MAX(IF(C3:C14="みかん",D3:D14)) と入力し、Shift+Ctrl+Enter で数式を確定 します。
最小値は =MIN(IF(C3:C14="みかん",D3:D14)) と入力し、Shift+Ctrl+Enter で数式を確定します。
すると、数式は{ と } でくくられ、配列数式として機能します。
Excel2021以降では 数式をそのまま[Enter]で入力します。Shift+Ctrl+Enterは必要ありません。
このときの数式は以下のように配列間で処理されています。
ここに書いた例では最大値を求めることはできますが、最小値は求めることができません 。
ここで書いた方法では、条件に合わないものは「0」となり、他の数値よりもっとも小さくなるためです。 INDEX関数の配列形式を利用する方法もあります。
=INDEX(配列, 行番号, [列番号])で行番号に「0」を指定すると配列全体を返すのを利用します。
G3セルの数式は =MAX(INDEX((C3:C14=F3)*(D3:D14),0)) としています。
詳細な使い方は INDEX関数の使い方 をご覧ください。
ここに書いた例では最大値を求めることはできますが、最小値は求めることができません 。
(条件に合わないものは「0」となり、他の数値よりもっとも小さくなるので)
条件付きの計算でよく利用されるSUMPRODUCT関数とMAX関数の組み合わせでも求めることができます。 G3セルの数式は =SUMPRODUCT( MAX( (C3:C14=F3)*(D3:D14) ) ) としています。
詳細な使い方は SUMPRODUCT関数の使い方 をご覧ください。
スポンサードリンク
Home »
エクセル関数の技 »
条件付きで最大値、最小値を求める
PageViewCounter
Since2006/2/27