Excel,数组公式,N / A超出范围,以及ROW()

时间:2014-12-04 03:51:08

标签: excel na array-formulas

我在Excel 2013中的数组公式中遇到ROW()问题。

示例:

我创建了一个名为“input”的命名区域,比如说4个单元格宽,10个单元格高。然后我制作一个数组公式=ROW(input)一个单元格宽,15个单元格高。

我得到10个数字 - 第一行是输入的第一行,其余的是从那里开始计数,然后是5#N / A.这是应该的。

如果不是=ROW(input),我会尝试以下其中一项:

=IFERROR(ROW(input),"x")

=IF(ISNA(ROW(input)),"x",ROW(input))

赶上#N / As然后我期待看到的是10个数字,然后是5个x。相反,我仍然看到10个数字,然后是5个#N / As。

谁能告诉我如何解决这个问题?我想获得10个数字,然后是5个数字。

虽然不太重要,但仅仅是为了好奇(或者如果出现在另一个案例中),为什么会发生这种情况?

为什么我要这样做?这是我为这个问题简化的更大公式的一部分。

(编辑以改善简洁和清晰度)

1 个答案:

答案 0 :(得分:1)

我认为,在这样的条款中,Excel优先考虑引用的人工扩展,以匹配所选工作表范围(通常用#N / As填充),而不是先解决IF条款数组。

因此,“正常”(例如,在单细胞阵列公式中),例如:

=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"})

使用多单元格数组,例如您的:

=IF(ISNA(ROW(input)),"YES","NO")

进入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 参数首先根据输入数组的工作表范围的尺寸重新确定尺寸。)< / p>

即:

=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 参数首先根据命名范围输入的尺寸重新标注尺寸。)

即:

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

希望有所帮助。

此致