EXCEL筛选及数组公式
=INDEX(A:A,SMALL(IF($B$1:$B$19<>"",ROW($1:$19),4^8),ROW(A1)&""))数组请大神帮我详细解释一下这个公式用上数组...
=INDEX(A:A,SMALL(IF($B$1:$B$19<>"",ROW($1:$19),4^8),ROW(A1)&"")) 数组
请大神帮我详细解释一下这个公式用上数组公式计算后,每一个函数所表示的意思,为什么这样做能够实现筛选一样的功能 展开
请大神帮我详细解释一下这个公式用上数组公式计算后,每一个函数所表示的意思,为什么这样做能够实现筛选一样的功能 展开
展开全部
你这个公式写错了,正确的公式如下:
=INDEX(A:A,SMALL(IF($B$1:$B$19<>"",ROW($1:$19),4^8),ROW(A1)))&""
公式的意思是:当B1:B19不等于空值时,返回1:19的行号,否则返回一个极大的行号(目的是为了获取空值,只要这个值所在的A列行号位置为空值就行)。
index(A:A,....)&""就是根据获取的行号取A列对应行的值,后面的连接空值的意思是为了保障输出空值,防止空值单元格显示0值。
追问
结尾的row(a1)有什么特定的含义呢?我试着修改了一下,好像这个地方不影响整个公式的运算,改为D 1. E1等,都不影响。是怎么回事呢?还有就是返回行号row计算出来不是数字嘛?为什么这里用了之后可以返回汉字?还有small函数在这里的作用是什么呢?
追答
ROW(A1)是配合small函数使用的,公式下拉后会变成ROW(A2),ROW(A3)....
表示依次取最小行号,第二小行号,第三小行号。。。所以下拉才能依次把符合条件的内容筛选排列出来。
列号变化不影响获取行号值,所以ROW(E1)=ROW(A1),因为它们的行号都是1。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询