作业帮 > 综合 > 作业

谁能帮我解释下面excel数组公式的含义

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/30 10:40:26
谁能帮我解释下面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)))&""}
谁能帮我解释下面excel数组公式的含义
这个公式的目的是剔除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))) &“”
再问: 谢谢!如果不是AJ列,数据分别是在A、B、C、D列,不用辅助列,怎样修改公式。
再答: 如果就是一列数据直接把AJ换成A就可以了 如果4列不重复的话再不适用辅助列的话就比较复杂了,估计你目前的水平更没法理解了
再问: AJ列有空格,在提取时怎样将空格去掉
再答: 上面的公式已经剔除空单元格了