谁能帮我解释下面excel数组公式的含义{=INDEX(AJ:AJ,SMALL(IF(ISBLANK

发布时间:2021-02-21 00:28:15

谁能帮我解释下面excel数组公式的含义{=INDEX(AJ:AJ,SMALL(IF(ISBLANK(AJ$1:AJ$200),200,IF(MATCH(AJ$1:AJ$200,AJ$1:AJ$200,)=ROW($1:$200),ROW(AJ$1:AJ$200),200)),ROW(AJ2)))&}

网友回答

这个公式的目的是剔除AJ1:AJ200中的重复数据
首先是这部分
IF(MATCH(AJ$1:AJ$200,AJ$1:AJ$200,)=ROW($1:$200),ROW(AJ$1:AJ$200),200)
把这部分数据进行查询,如果是第一次出现的查询结果肯定等于自己的行号,那么就返回对应的行号,如果不是第一次出现那么就不等于自己的行号,那么就把其变成200 AJ200应该是个空单元格
比如1;2;2;3;1;3...那么返回的结果就是1;2;200;4;200;200...
一般用这个就可以了,但是可见这部分有空单元格,为了避免出错空单元格直接用match查找肯定出错所以就用了这部分
IF(ISBLANK(AJ$1:AJ$200),200, 也就是如果是空单元格就让其直接变成200,和上面的200一样目的就是返回这个区间最大的行号,并且这个AJ200是空单元格
然后是SMALL(...,ROW(AJ2))也就是从第二个最小值开始,根据上面的返回的不重复的行号从小到大选取比如我上面的例子SMALL(...,ROW(AJ2))就是2,下拉公式就变成SMALL(...,ROW(AJ3))也就返回4
所以这里的ROW(AJ2)就是2为了下拉变成3就用了ROW函数当然用ROW(A2)也一样
然后就是INDEX(AJ:AJ,)分别取出AJ列对应行的数据了
最后加了个&“”的目的就是让空单元格显示空
如果不加这个空单元格就会返回0
公式当然可以适当的修改修改
=INDEX(AJ:AJ,SMALL(IF(MATCH(AJ$1:AJ$200&,AJ$1:AJ$200&,)=ROW($1:$200),ROW($1:$200),200),ROW(A2))) &“”
以上问题属网友观点,不代表本站立场,仅供参考!