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)&"")) 数组
请大神帮我详细解释一下这个公式用上数组公式计算后,每一个函数所表示的意思,为什么这样做能够实现筛选一样的功能
展开
 我来答
苗乔恩
科技发烧友

2019-08-02 · 电脑数码,办公应用爱好者。
苗乔恩
采纳数:9706 获赞数:14591

向TA提问 私信TA
展开全部
  1. 你这个公式写错了,正确的公式如下:

    =INDEX(A:A,SMALL(IF($B$1:$B$19<>"",ROW($1:$19),4^8),ROW(A1)))&""

  2. 公式的意思是:当B1:B19不等于空值时,返回1:19的行号,否则返回一个极大的行号(目的是为了获取空值,只要这个值所在的A列行号位置为空值就行)。

  3. index(A:A,....)&""就是根据获取的行号取A列对应行的值,后面的连接空值的意思是为了保障输出空值,防止空值单元格显示0值。

追问
结尾的row(a1)有什么特定的含义呢?我试着修改了一下,好像这个地方不影响整个公式的运算,改为D 1. E1等,都不影响。是怎么回事呢?还有就是返回行号row计算出来不是数字嘛?为什么这里用了之后可以返回汉字?还有small函数在这里的作用是什么呢?
追答
ROW(A1)是配合small函数使用的,公式下拉后会变成ROW(A2),ROW(A3)....
表示依次取最小行号,第二小行号,第三小行号。。。所以下拉才能依次把符合条件的内容筛选排列出来。
列号变化不影响获取行号值,所以ROW(E1)=ROW(A1),因为它们的行号都是1。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式