如何使IF语句在Excel 2010+中的INDEX MATCH中保持为真?

我正在尝试使用INDEX MATCH来返回与根据各种标准更改的值相关的项目列表的最佳select。 我目前的表单设置和公式是这样的:

ABC Item1 Bad 27 Item2 Good 15 Item3 Good 27 Item4 Bad 44 

列A是一个命名的范围Item
列B是一个命名的范围ItemType
C列是一个命名的范围ItemValue

 =INDEX(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")),MATCH(MAX(IF(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Type")="Good",INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Value"))),INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Value"),0)) 

(作为数组公式input)
在当前的迭代中,这将返回Item1 。 我希望它返回Item3

在这个例子中, 'Sheet'!B3包含要search的类别(在本例中为Item )。 我使用基于该单元格中的数据和使用INDIRECT / SUBSTITUTE的后缀的各种命名范围。 我目前的公式find最高的值也是Good ,但是返回与之匹配的第一个值,不pipe它是Good还是Bad 。 我已经尝试在公式的不同点添加额外的IF语句,但单元格会返回FALSE或公式语法错误。 我怎样才能在整个公式中保持我的="Good" IF声明?

谢谢!

您将需要翻倍的良好条件。 一次用于确定最大数量,然后再用最大数量来确定项目。

这个非数组的等价物是我赞成的数组方法。

 =INDEX(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")), MAX(INDEX(ROW(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")))*(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Type")="Good")*(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Value")=MAX(INDEX(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Value")*(INDIRECT(SUBSTITUTE('Sheet'!B3," ","")&"Type")="Good"), , ))), , ))) 

这是你的数组方法。

 =INDEX(INDIRECT('Sheet'!B3), MATCH(MAX(IF(INDIRECT('Sheet'!B3&"Type")="Good",INDIRECT('Sheet'!B3&"Value"))), IF(INDIRECT('Sheet'!B3&"Type")="Good", INDIRECT('Sheet'!B3&"Value")), 0)) 

如果___Type___Value总是处于相对于主的相同位置,那么您可能需要放弃三个命名范围,并使用一个具有OFFSET命名范围。

 =INDEX(INDIRECT('Sheet'!B3), MATCH(MAX(IF(OFFSET(INDIRECT('Sheet'!B3), 0, 1)="Good",OFFSET(INDIRECT('Sheet'!B3), 0, 2))), IF(OFFSET(INDIRECT('Sheet'!B3), 0, 1)="Good", OFFSET(INDIRECT('Sheet'!B3), 0, 2)), 0)) 

OFFSETfunction被认为是一个易失性function 。 只要工作簿中的任何内容发生变化,就会重新计算,因此应该避免这种情况。 但是,您已经在使用INDIRECTfunction ,并且被认为是不稳定的。