2017-07-13 19 views
0
に基づいて、最大値の行を見つけるために
Column: A  | B  | C  | D 
Row 1: Variable | Margin | Sales | Index 
Row 2: banana | 2  | 20  | 1 
Row 3: apple | 5  | 10  | 2 
Row 4: apple | 10  | 20  | 3 
Row 5: apple | 10  | 10  | 4 
Row 6: banana | 10  | 15  | 5 
Row 7: apple | 10  | 15  | 6 

"Variable" sits in column A, row 1. 
"Fruit" refers to A2:A6 
"Margin" refers to B2:B6 
"Sales" refers to C2:C6 
"Index" refers to D2:D6 

質問:Excelの配列数式は複数の条件

上記の表から、

、私は2つの最大の「販売」の値の行を検索したいときフルーツ=「りんご」 Margin> = 10です。正解は3行目と6行目の値です。次のメソッドを成功させてみました。

Iは

=LARGE(IF(Fruit="apple",IF(Margin>=10,Sales)),{1,2}) + CSE 

を試みており、これは20と15ではなく、行を返します。

Iは

=MATCH(LARGE(IF(Fruit="apple",IF(Margin>=10,sales)),{1,2}),Sales,0)+1 

を試みたが、最初のマッチが「バナナ」ではない「APPLE」から20及び15である思い付くよう行2及び6を返してきました。

Iは

=INDEX(D2:D7,LARGE(IF(Fruit="apple",IF(Margin>=10,ROW(Sales)-ROW(INDEX(Sales,1,1))+1)),{1,2}),1) 

を試みたが、これらはテーブルの下から「APPLE」のちょうど最初の出現であるように、これは、行7および5(すなわち「インデックス」6と4)を返します。彼らは最大値ではありません。

これはExcelの式で行うことができますか?マクロが必要ですか?マクロの場合は、マクロに助けてもらえますか?ありがとうございました!

答えて

1

使用この式:

=INDEX(D:D,AGGREGATE(15,6,ROW($A$2:$A$7)/(($B$2:$B$7>=10)*($A$2:$A$7="apple")*($C$2:$C$7 = AGGREGATE(14,6,$C$2:$C$7/(($B$2:$B$7>=10)*($A$2:$A$7="apple")),F2))),1)) 

Iは、第一および第二のを見つけるために、それぞれ、F2及びF3に1と2を入れました。

enter image description here


我々は(COUNTIF($G$1:G1,$D$2:$D$7) = 0)を追加する必要が重複に対処するための編集#1

$G$1:G1は、この数式の最初の配置の真上のセルを参照する必要があります。だから、式は絶対に華麗だ少なくとも行2.

=INDEX(D:D,AGGREGATE(15,6,ROW($A$2:$A$7)/((COUNTIF($G$1:G1,$D$2:$D$7) = 0)*($B$2:$B$7>=10)*($A$2:$A$7="apple")*($C$2:$C$7 = AGGREGATE(14,6,$C$2:$C$7/(($B$2:$B$7>=10)*($A$2:$A$7="apple")),F2))),1)) 

enter image description here

+0

で起動する必要があります。スコットありがとう!あなたのソリューションと集計機能は非常に強力です。 1つの例外を除いて動作します。 2つの最高値が等しい場合、最も低い行番号のみが返されます。私は、最も堅牢なソリューションはVBAにあると思いますか? – ZQN

+0

編集を参照してください。これがあなたの質問に答える場合は、正しいことを忘れないでください。 @ ZQN –

+0

@Scott Cranerはとても役に立ち、非常に感謝しています。要求通りに点滅 – ZQN

関連する問題