excel表格公式解释。。

=INDEX(A:A,SMALL(IF(MATCH(A$1:A$100&"",A$1:A$100&"",)=ROW($1:$100),ROW($1:$100),4^8),ROW(1:1)))&""
能不能告诉我,这个公式,按步骤详细解释每一步起到的作用。。。
这是一个数组公式。

先看最里面的一层IF:
MATCH(A$1:A$100&"",A$1:A$100&"",)=ROW($1:$100)的意思是判断A列数字是否重复,因为MATCH(A$1:A$100&"",A$1:A$100&"",)得到是区域中每个单元格的位置(相对行号),如果有重复项得到是该项在区域中第一次出现的行号;而ROW($1:$100)得到是每个单元格在工作表的自然行号。如果这两个相等,就是首次出现,否则就是重复。
那么IF(MATCH(A$1:A$100&"",A$1:A$100&"",)=ROW($1:$100),ROW($1:$100),4^8)数组得到的结果就是,如果首次出现就取它的行号,否则就是4^8。
4^8=65536,是03版中最大的行号,通常不会用到,因为你不可能去取第65536个最小值(而且本例当中区域是1-100行)。在很多IF数组中会看到这样的运用。
这样得到一个由行号和65536组成的数组。

注:
其实薯简写成IF(MATCH(A$1:A$100&"",A$1:A$100&"",)=ROW($1:$100),ROW($1:$100))也是可以的,不符合的部分得到FALSE,在接下来的SMALL排序中也会被过滤掉。
&""在这里的运用也很巧妙,避免了A$1:A$100区域中包含“真空”单元格从而出错的问题。

第二层,携樱
=SMALL(第一层,ROW(1:1))
用SMALL函数对上一个数组结果取第1小的值,也就是最小值的行号。随着公式下拉,ROW(1:1)递增,那就分别得到第2小,第3小,等等。

第三层
=index(a:a,第二层)
用INDEX函数,在A列区域,按照第二层取得的行号进行引用,得到相应的单元格。
为了避免空值的结果为0,所以加&""。

补充:
回答完才看见一楼的回复,的确是这样,文字很难表达清楚。
这个公式应用比较数隐裤广泛,类似于高级筛选的效果。涉及数组运算,相对引用与绝对引用,MATCH,row,small,index等诸多知识,首先得分别知道这些知识才能理解。
你如果一点都不懂,打字要打一堆了,你还是随便找个高手,去hi他吧