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_truevalue_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_truevalue_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_truevalue_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} 

希望有点帮助。

问候