
お世話になっております。
SUMPRODUCT関数の最小値の求め方で壁を越えられないため
皆様のお知恵をお貸しください。
下のような表があります。
A B C(セル列)
1 青 ○ 100
2 赤 ○ 95
3 青 × 75
4 青 ○ 200
5 赤 × 65
6 赤 × 80
7 青 ○ 105
8 青 × 85
9 赤 ○ 110
10 赤 × 70
青かつ○の最大値(200)は
=SUMPRODUCT(MAX((A1:A10="青")*(B1:B10="○")*(C1:C10)))
にて求められるのですが
青かつ○の最小値(100)は
=SUMPRODUCT(MIN((A1:A10="青")*(B1:B10="○")*(C1:C10)))
とすると、0が返ってしまいます。
googleで検索しては検証しを繰り返しましたが
どうにもうまくいきません。
Shift+Ctrl+Enterによる
{=MIN(IF((A1:A10="青")*(B1:B10="○"),C1:C10))}
では求められますが、出来れば配列でない方法を探しています。
宜しくお願い致します。
No.6ベストアンサー
- 回答日時:
そのまんま
=IF(SUMPRODUCT((A1:A10="青")*(B1:B10="○")*(C1:C10<>"")*(MAX(C1:C10)))=0,"該当なし",
MAX(C1:C10)-SUMPRODUCT(MAX((A1:A10="青")*(B1:B10="○")*(C1:C10<>"")*(MAX(C1:C10)-C1:C10))))
ご教示ありがとうございました。
思い通りの結果が出る数式を手に入れることができ
誠にありがとうございました。
SUMPRODUCT関数を用いての求め方でしたので
ベストアンサーとさせていただきました。
また、最初の質問の段階で条件がまとまりきれておらず
何度も手間をかけさせてしまい申し訳ございません。
以後、気をつけたいと思います。
ありがとうございました。
No.5
- 回答日時:
No.1です
>Shift+Ctrl+Enterによる
>{=MIN(IF((A1:A10="青")*(B1:B10="○"),C1:C10))}
>では求められますが
と補足では矛盾します。補足の空白は、単純に未入力なセルってことで
未入力なセルも対象外なら条件を追加すればよい
=MAX(C1:C10)-SUMPRODUCT(MAX((A1:A10="青")*(B1:B10="○")*(C1:C10<>"")*(MAX(C1:C10)-C1:C10)))
この回答への補足
ご回答ありがとうございます。
また条件の矛盾点、申し訳ございませんでした。
最後に御教え頂きたいのですが
1,4,7行(青 ○ )のデータがすべて未入力の場合
ご教示頂いた数式では、9行目の110が表示されるのですが
これを空白にすることは出来ますでしょうか?
No.4
- 回答日時:
No3の回答の補足です。
C列に空白セルも混ざっているなら(空白セルを除外対象にしたいなら)、C列が空白以外という条件を追加することになります。
=MIN(INDEX(((A1:A10<>"青")+(B1:B10<>"○")+(C1:C10=""))*10^10+C1:C10,))
上記の数式の意味は、A列が青以外、B列が○以外あるいはC列が空白のいずれかの条件が成立する場合は10^10という大きな数値を乗算した値(すべて成立しない場合はこの部分が0)と、C列の値を加算した値の中から最小値を調べています。
なお、INDEX関数で配列を範囲に変換する場合は、その配列を取得する場合にIF関数などを使用した数式は利用できません(配列の四則計算のみ使用可)。
ご回答ありがとうございました。
MackyNo1さんご教示の数式はシンプルで正確に答えが求められましたのでベストアンサーとさせて頂きたいところでしたが
今回はSUMPRODUCTでのお題ということでNo.6さんにさせて頂きました。
INDEX関数につきましても勉強していきたいと思います。
ありがとうございました。
No.2
- 回答日時:
>青かつ○の最小値(100)は =SUMPRODUCT(MIN((A1:A10="青")*(B1:B10="○")*(C1:C10))) とすると、0が返ってしまいます。
論理的にそれで正しいことになります。
SUMPRODUCT関数内でMIN関数を使っていますがその引数の配列値に 0 が7個含まれていますので、その内の1つがMIN関数で返されます。
SMALL関数で8番目、またはLARGE関数で3番目が目的の値になります。
従って、次の式が適当と思います。
=SUMPRODUCT(LARGE((A1:A10="青")*(B1:B10="○")*(C1:C10),COUNTIFS(A1:A10,"青",B1:B10,"○")))
>出来れば配列でない方法を探しています。
SUMPRODUCT関数も配列値を扱っています。
只、Ctrl+Shift+Enterで確定しなくても良いだけです。
{=MIN(IF((A1:A10="青")*(B1:B10="○"),C1:C10))}
数式を確定するときにCtrl+Shift+Enterの操作で配列値が扱えるので、この手法の方がシンプルになると思います。
ご回答ありがとうございます。
LARGE関数を使う方法もあるのですね。
なぜか私の環境では、#NAME?エラーとなってしまいます。
No.1
- 回答日時:
SUMPRODUCT関数自体、配列を扱う関数です。
符号を逆にし、MIN関数を使わなければよいかと思います。
=MAX(C1:C10)-SUMPRODUCT(MAX((A1:A10="青")*(B1:B10="○")*(MAX(C1:C10)-C1:C10)))
この回答への補足
ご回答ありがとうございます。
重大なミスをしてしまいました。
7 青 ○ 105
ではなく、
7 青 ○ 空白
でした。
申し訳ございません。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) Excel 数式を教えてください 2 2022/06/02 12:24
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) Microsoft Excel 入力した値に応じて別セルの塗りつぶしの色を変えたいです。 2 2022/09/18 04:19
- Excel(エクセル) エクセルの掛け算 3 2022/12/13 14:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのINDEXとMATCH関数でスピ...
-
Excelのセルの色指定をVBAから...
-
Excel VBA 配列の分割について
-
検索して合致したら一列づつ別...
-
【VBA】ユーザーフォーム リス...
-
エクセルでエラーを無視して一...
-
表にフィルターをかけ、絞った...
-
ListBoxでの Drag&Dropについて
-
iniファイルのキーと値を取得す...
-
DataSetから、DataTableを取得...
-
For Nextマクロの高速化につい...
-
Dictionary の書き出しのコード
-
Excel教えてください
-
Datatableへの代入
-
配列のSession格納、及び取得方...
-
.NET - 配列変数を省略可能の引...
-
【VBA】配列に格納したデータを...
-
こういう場合、どの関数を使え...
-
【Excel】VLOOKUP検索値が複数...
-
SUMPRODUCT関数を用いた最小値
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
ExcelのINDEXとMATCH関数でスピ...
-
Excelのセルの色指定をVBAから...
-
Excel オートフィルタのリスト...
-
DataSetから、DataTableを取得...
-
array関数で格納した配列の型を...
-
読み込みで一行おきに配列に格納
-
.NET - 配列変数を省略可能の引...
-
【VBA】ユーザーフォーム リス...
-
配列がとびとびである場合の書き方
-
SUMPRODUCT関数を用いた最小値
-
iniファイルのキーと値を取得す...
-
VBAでの100万行以上のデータの...
-
エクセルでエラーを無視して一...
-
配列のSession格納、及び取得方...
-
VBA 配列に格納した値の平均の...
-
VB6.0 ファイルの一括読込み
-
Datatableへの代入
おすすめ情報