EXCEL高手请回答

来源:百度知道 编辑:UC知道 时间:2024/05/29 23:19:24
=index(目录!A:A,small(if(目录!A$3:A$450<>0,row(目录!A$3:A$450)),row(1:1)))按Ctrl+Shift+Enter生成数组公式,有高手能详细解释一下吗
问题补充:A:A是什么意思
A$3:A$5中的行号是绝对引用,那么公式向下拖的话得出来的值岂不是一样都是A3到A5中的那个最小值
生成数组又体现在哪里呢
这个公式不仅应用于一个单元格,而是应用到一列单元格,这个时候它又是什么意思呢?
公式得出的效果我是知道的,只是对所谓的数组格式不太明白, excel公式里是怎么表示数组的呢,各位高手好象也没对此作出解答

A:A表示第A列的全部单元格。

公式向下拖的话就象你说的一样其引用的范围不会变化,可是后面的row(1:1)会变成row(2:2)的,这样第二行公式所产生的值就是前面求出的数组中的第二个元素了。

要理解这个公式的话,你要一步一步地看它的求值过程。

先是IF(A$3:A$450<>0,ROW(A$3:A$450))。它表示如果A$3到A$450这此单元格里非零的话,就得到它的行号,否则就是FALSE。

然后看SMALL(IF(A$3:A$450<>0,ROW(A$3:A$450)),ROW(1:1))。它表示从前面的一系列非零行的行号中取得最小的1个。(如果复制公式的话最后的1变成2,就取得第2小的一个。

最后的Index函数则返回该行A列的值。

所以该公式的结果就是去除了A$3到A$450中的非零行。