进行排序和筛选的数组公式

数组公式可以用于动态筛选数据区域,其中的一个关键步骤是使用数组公式去排序一些数字。

使用数组公式排序数字

如下图1所示,列A中的单元格区域A1:A10放置了一系列无序的数字,要求在列B中以升序排列该区域的这些数字。

图1

可以在单元格B1中输入公式:

=SMALL($A$1:$A$10,ROW())

向下拖至单元格B10,如下图2所示。

图2

还有一种方法是使用数组公式。选择单元格区域B1:B10,输入公式:

=SMALL(A1:A10,ROW(Z1:Z10))

按下Ctrl+Shift+Enter组合键,结果如下图3所示。

图3

公式中,ROW(Z1:Z10)生成数组{1;2;3;4;5;6;7;8;9;10},作为索引值,然后依次在单元格区域A1:A10中取值。然而,如果在第1行插入新行,公式会变为:

=SMALL(A2:A11,ROW(Z2:Z11))

将导致结果错误。其中,第2个参数生成的数组变为{2;3;4;5;6;7;8;9;10;11}。

为了提高公式的健壮性,使用INDIRECT函数保持第2个参数生成的索引数组在插入行时保持不变,公式为:

=SMALL(A1:A10,ROW(INDIRECT("1:10")))

结果与上面的相同,如下图4所示。

图4

在公式中使用INDIRECT函数,可使索引数组保持不变,因而可用于排序未知大小的动态区域(该区域的大小可以估计一个最大值)。

广告

数据科学与大数据分析 数据的发现 分析 可视化与表示(异步图书出品)

作者:[美]EMC教育服务团队(EMC Education Services)

京东

使用数组公式筛选数据

如下图5所示,列A中单元格区域A1:A10有一系列数据,要筛选出这些数据中有7个字符的数据并放置在列B中。

选择单元格区域B1:B10,输入数组公式:

=INDEX(A:A,SMALL(IF(LEN(A1:A10)=7,ROW(A1:A10),99),ROW(INDIRECT("1:10"))),1)&""

图5

公式中:IF(LEN(A1:A10)=7,ROW(A1:A10),99)将得到数组{1;99;99;99;99;6;7;99;99;99},其中的99表明所有单元格中的数值长度不是7,其他数字则是长度为7的数值所在单元格的行号。

使用本文前面的技术对该数组排序:SMALL(IF(LEN(A1:A10)=7,ROW(A1:A10),99),ROW(INDIRECT("1:10"))),返回数组{1;6;7;99;99;99;99;99;99;99}。

将上面的数组传递给INDEX函数得到结果。

由于单元格A99为空,INDEX函数将返回0,因此在公式末尾添加&””。

对于更大的数据集,将公式中的99和”1:10”进行相应的修改,使其足够大以匹配数据区域的大小。

小结

在前面的示例中,我们假设数据区域从第1行开始。当然,数据区域不一定非得从第1行开始,但INDEX函数的第1个参数必须是包含数据区域的整列。

如果数据区域命名为MyData,那么数组公式为:

=INDEX(dataColumn,SMALL(IF(LEN(MyData)=7,ROW(MyData),ROW(MyData)+ROWS(MyData)),ROW(INDIRECT(“1:1048576”))),1)& “”

公式中的dataColumn,引用:

=INDEX(Sheet1!$1:$1048576,0,COLUMN(MyData))

上述公式可以根据筛选条件进行相应的修改,以筛选出满足条件的数据。

(0)

相关推荐

  • 精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域

    excelperfect 动态单元格区域是指当添加或删除源数据时,或者随着包含单元格区域的公式被向下复制时根据某条件更改,可以自动扩展或收缩的单元格区域,可以用于公式.图表.数据透视表和其他位置. 那 ...

  • Exce教程:最全合并单元格问题集(建议收藏)Excel神技能

    提示:APP长按图片识别下载 会员免费学习全站23套教程,也包括以后更新发布的  [解锁会员]   支持微信公众号+小程序+APP+PC网站多平台学习 最全合并单元格问题集,解决你头疼的需求! 1.批 ...

  • 精通Excel数组公式022:提取唯一值列表并排序(续)

    使用公式对数字进行排序 下图12展示了两个对数字进行排序的公式.使用SMALL/ROWS函数从小到大排序,使用LARGE/ROWS函数从大到小排序. 图12 使用辅助列公式对基于数字列的记录进行排序 ...

  • 精通Excel数组公式021:提取唯一值列表并排序

    excelperfect 本文将综合使用前面系列中学习到的技术,包括布尔逻辑.动态单元格区域.提取满足条件的数据.统计唯一值等,创建出一个解决问题的大型公式.当然,如果你不需要自动动态更新数据,完全可 ...

  • 学习理解Excel数组公式的2种方法

    对于初学者来说,数组公式也是够难理解的了,尤其是那些大型公式,看着头都大了!然而,如果我们能够在学习数组公式时,看到其计算过程,无疑会很有帮助. 方法1:使用F9键,查看数组公式的中间值 例如下图所示 ...

  • 公式中的王者——数组公式

    Excel中有一类称作数组公式的公式,相对比较复杂,有点难以理解,很多人望而却步,然而数组公式很强大,能够完成很多不可思议的任务,绝对值得学习. 使用数组公式,可以判断数据是否与指定区域中的数据相匹配 ...

  • 使用数组公式创建日历

    如何使用数组公式创建如下图1所示的日历? 图1 在单元格B1中输入日期时,显示该日期所在月的日历,如下图所示. 图2 先不看答案,自已动手试一试. 公式思路 一周有7天,一个月有28天.29天.30天 ...

  • Excel小技巧82:利用数组公式来保护行

    excelperfect 这里介绍数组公式的一个另类用法.假设你不想让其他人在工作表某个部分删除或插入行,移动到尽量靠右侧的单元格,在相对应的行中创建一个数组. 例如,不想让他人在工作表的第1至9行范 ...

  • 均线粘合排序 通达信炒股指标公式均线粘合突破选股 短线股票指标-云指标公式网

    均线粘合排序 通达信炒股指标公式均线粘合突破选股 短线股票指标-云指标公式网

  • excel数组公式,你会用么?

    你好,我是世杰老师,很高兴在这里和你遇见. 我们经常会在一些excel函数公式两边看到有大括号{},我想大部分同学看到大括号心中就会浮现大大的问号,到底这个大括号有什么作用,今天老师为同学们揭秘大括号 ...

  • 学会就能效率翻倍的数组公式,到底怎么用?

    可乐的数据分析之路 1.什么是数组公式 在研究数组公式前,先要明确什么是数组? 数组嘛,可以理解为若干相同数据的组合 比如{1,2,3,4}是数值组合在一起,{"c";" ...