我在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个数字。
虽然不太重要,但仅仅是为了好奇(或者如果出现在另一个案例中),为什么会发生这种情况?
为什么我要这样做?这是我为这个问题简化的更大公式的一部分。
(编辑以改善简洁和清晰度)
答案 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}
希望有所帮助。
此致