如何使 IF 语句在 Excel 2010+ 的整个 INDEX MATCH 中保持正确?

How to make an IF statement remain true throughout an INDEX MATCH in Excel 2010+?

我正在尝试使用 INDEX MATCH return 从与根据各种条件更改的值关联的项目列表中做出最佳选择。我当前的 sheet 设置和公式是这样的:

A     B    C
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))

(以数组公式形式输入)
在当前迭代中,这将 return Item1。我想要 return Item3.

在此示例中,'Sheet'!B3 包含要搜索的类别(在此示例中 Item)。我根据该单元格中的数据使用各种命名范围,并使用 INDIRECT/SUBSTITUTE 作为后缀。我当前的公式找到的最大值也是 Good,但是 return 是匹配它的第一个值,无论它是 Good 还是 Bad。我尝试在公式的不同点添加额外的 IF 语句,但单元格会 return 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))

OFFSET function is considered a volatile function. These recalculate whenever anything in the workbook changes and should be avoided for that reason. However, you are already using the INDIRECT function 也被认为是不稳定的。