Excel,数组公式,范围外的N / A和ROW()
我在Excel 2013中的数组公式中遇到了ROW()问题。
例:
我做了一个名为范围,称为“input”,说4宽10高。 然后我做一个数组公式=ROW(input)
一个单元格宽,15个单元高。
我得到10个数字 – 第一个是input的第一行,剩下的数字就是这个数字,然后是5#N / A。 这是应该的。
如果不是=ROW(input)
我尝试以下之一:
=IFERROR(ROW(input),"x")
要么
=IF(ISNA(ROW(input)),"x",ROW(input))
要抓住#N / As,那么我期望看到的是十个数字,然后是五个数字。 相反,我仍然看到十个数字,然后是五个#N / A。
谁能告诉我如何解决这个问题? 我想得到十个数字,然后是五个数字。
而不重要,但只是为了好奇(或者如果出现在另一种情况下),为什么会发生这种情况呢?
我为什么要这样做? 这是我为这个问题简化了一个更大公式的一部分。
(编辑以提高简洁性和清晰度)
我相信,在这样的子句中,Excel优先于人工扩展引用来匹配所select的工作表范围(它总是通过填充#N / As来完成),而不是首先在数组上parsingIF子句。
所以,“正常”(例如在一个单元格arrays公式中),例如:
=SUM(IF(ISNA(ROW(input)),"YES","NO"))
会有效地强制Excel将IF函数的单个value_if_true和value_if_false参数扩展为这些值的语法合适的数组,即:
=SUM(IF({FALSE;FALSE;FALSE;FALSE;FALSE},{"YES","YES","YES","YES","YES"},{"NO","NO","NO","NO","NO"}))
即:
=SUM({"NO";"NO";"NO";"NO";"NO"})
与多单元格arrays公式,例如您的:
=IF(ISNA(ROW(input)),"YES","NO")
input了10个单元的范围,因此不首先解决:
=IF(ISNA({1;2;3;4;5;#N/A;#N/A;#N/A;#N/A;#N/A}),{"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES"},{"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO"})
(其中value_if_true和value_if_false参数首先根据input数组的工作表范围的维度进行重新定义。)
即:
=IF({FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE},{"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES";"YES"},{"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO";"NO"})
即:
={"NO";"NO";"NO";"NO";"NO";"YES";"YES";"YES";"YES";"YES"}
而是作为:
=IF(ISNA({1;2;3;4;5;#N/A;#N/A;#N/A;#N/A;#N/A}),{"YES";"YES";"YES";"YES";"YES";#N/A;#N/A;#N/A;#N/A;#N/A},{"NO";"NO";"NO";"NO";"NO";#N/A;#N/A;#N/A;#N/A;#N/A})
( value_if_true和value_if_false参数首先根据命名范围input的尺寸进行重新定义。)
即:
=IF({FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE},{"YES";"YES";"YES";"YES";"YES";#N/A;#N/A;#N/A;#N/A;#N/A},{"NO";"NO";"NO";"NO";"NO";#N/A;#N/A;#N/A;#N/A;#N/A})
即:
{"NO";"NO";"NO";"NO";"NO";#N/A;#N/A;#N/A;#N/A;#N/A}
希望有点帮助。
问候