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
。
问候 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
。