Excel 公式:使用 INDIRECT 获取与命名范围相同的行号会导致 #VALUE!错误

Excel Formula: Using INDIRECT to get same row number with named range causes #VALUE! error

问候 Stack Overflow 居民!

我在尝试使涉及 INDIRECT 的公式与 INDEX 一起运行时遇到问题。当我使用特定的行值时,数组工作正常,但是当我尝试使用 INDIRECT 获取当前行号时,我得到一个#VALUE!错误。

例如:我在单元格 R108 中有这个,它可以正常工作:

=IF(OR(ISERROR(INDEX(MODEL,SMALL(IF(OWNERID=N108,ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))),N108=""),"",INDEX(MODEL,SMALL(IF(OWNERID=N108,ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1)))

N108 指的是与 OWNERID 匹配的值,它是同一工作簿中另一个 sheet 的命名范围。

但我想要做的是让公式引用它所在的同一行,所以这就是我想要的工作:

=IF(OR(ISERROR(INDEX(MODEL,SMALL(IF(OWNERID=INDIRECT("N"&ROW()),ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1))),INDIRECT("N"&ROW())=""),"",INDEX(MODEL,SMALL(IF(OWNERID=INDIRECT("N"&ROW()),ROW(OWNERID)-ROW(INDEX(OWNERID,1,1))+1),1)))

为了清楚起见,仅提及;在一个 sheet 上,我有一个计算机信息列表,其中有两个命名范围:MODEL 和 OWNERID 由于公式是一个数组,我记得按 CTRL + SHIFT + ENTER。

我错过了什么导致 INDIRECT 不向我提供行号以供参考?据我所知,它只是不喜欢它被用作命名范围查找的一部分这一事实。

提前致谢!

此致, 迪伦.

这是数组上下文中 INDIRECT 的已知行为。由于 INDIRECT 将 return 一个引用而不是一个值,因此数组上下文似乎无法从该引用中获取值。也许这也是由于 INDIRECT.

的不稳定行为造成的

简单示例:

公式:

D1 = {=SUM(IF(A1:A10=INDIRECT("A"&{3,5,7}),B1:B10))}

D3 = {=SUM(IF(A1:A10=N(INDIRECT("A"&{3,5,7})),B1:B10))}

D5 = {=SUM(IF(A1:A10=T(INDIRECT("A"&{3,5,7})),B1:B10))}

如您所见,如果 INDIRECT 包含在 N 中,它会按预期工作。

但是为此我们必须知道值是数字还是文本。如果是文本,例如 A 列中的 Z1, Z2, Z3, ... , Z10,则必须使用 T 而不是 N