OFFICE 365的FILTER函数,颠覆了我对Excel的认知②

最近推送的五篇文章:

在上一篇介绍OFFICE 365的文章中,链接:

OFFICE 365的这些功能,颠覆了我对Excel的认知①

我们介绍了OFFICE 365体验版中强大的动态数组功能,它可以根据公式结果智能地在相应单元格区域显示。从本篇文章开始,我们将介绍几个新增的函数。这些函数可以让以前要用数组公式才能实现的功能,现在用一个函数就可轻松搞定。

先从筛选函数FILTER开始。

一、需求

在工作中,我们需要根据指定的条件,将符合条件的所有记录从数据源表格式查找过来。比如所有客户的交易明细存在同一张工作表,现需要将指定客户的交易明细查询出来:

要实现这个需求,如果不用Power Query的话,一是可以用高级筛选。但高级筛选在查询下一个单位时 ,需要重新设置一次,很麻烦。二是用函数公式查询。典型的套路有:INDEX+SMALL+ROW、或者LOOKUP+COUNTIF+OFFSET。如果我们不会数组公式,都是用VLOOKUP、COUNTIF结合辅助列,来实现查询符合条件的多个记录。
由于每个单位的往来明细条数不一样,没有动态数组这功能,用函数公式查询明细,每次都要改变修改填充公式或删除公式、以及设置单元格格式(可用条件格式智能设置格式)。
在OFFICE 365中,应用动态数组和FILTER函数,可完美的满足我们的需求。
二、FILTER函数语法
单词释义

filter

英 [ˈfɪltə(r)]   美 [ˈfɪltɚ]

n.滤波器;滤光器;滤色镜;[化] 过滤器

vi.过滤;透过;渗透

vt.过滤;滤除

函数语法

=FILTER(数据区域,筛选条件,[无满足条件的记录时返回的值])

第二个参数“筛选条件”的计算结果要是TRUE或FALSE,这一点和高级筛选一样。

三、基本应用的案例
1、单条件筛选
筛选出办事处为“重庆”的记录。筛选公式:
=FILTER(A3:E22,C3:C22="重庆")

筛选结果貌似不能指定返回哪些列,如果能改为可根据指定的列标题,返回相应的列就更好了。

技巧:如何指定返回的列?

方法1:在参数1只选定要返回的列

方法2:用IF函数拼结两个不相邻的列

这个技巧我们常用于VLOOKUP的反向查找,详见《“偷懒”的技术:打造财务Excel达人》中的示例:

在这里我们也可用这个技巧来拼接,如下图:

貌似只能拼接二列,如果要拼接多列,可以用SWITCH函数:

2、多条件筛选(或)
在FILTER函数中,用加号来表示“或”。
要筛选出“四川”、“贵州”办事处的记录,其公式为:
=FILTER(A3:E22,(C3:C22="四川")+(C3:C22="贵州"))
如果改用OR,公式会出错:
=FILTER(A3:E22,OR((C3:C22="四川"),(C3:C22="贵州")))
3、多条件筛选(且)
在FILTER函数中,用星号(乘)表示“和、且”。

要筛选出“西部大区”,并且满足“2≤合同数量≤5”条件的记录,筛选公式为:

=FILTER(A3:E22,(B3:B22="西部大区")*(D3:D22>=2)*(D3:D22<=5))

四、拓展应用的案例
我们还可结合其他函数,来满足高级查询需求:
1、筛选“合同数量合计数大于5的办事处的所有记录”
由于要根据办事处的合计来筛选,普通的筛选很难实现,但用FILTER函数可轻松搞定。
筛选公式:
=FILTER(A3:E22,SUMIF(C3:C22,C3:C22,D3:D22)>5)
2、筛选只有一条记录的办事处
筛选公式:
=FILTER(A3:E22,COUNTIF(C3:C22,C3:C22)=1)
3、筛选出各办事处最大金额的记录

筛选公式:

=FILTER(A3:E22,E3:E22=MAXIFS(E3:E22,C3:C22,C3:C22))

4、筛选表1有,表2也有的记录(不考虑金额是否相同)
筛选公式:
=FILTER(表1,ISNUMBER(MATCH(表1[省份],表2[省份],0)),"")
5、筛选表1有,表2无的记录
筛选公式:
=FILTER(表1,ISNA(MATCH(表1[省份],表2[省份],0)),"")
(0)

相关推荐

  • 如何求各编号对应的值中,非重复值的数量?果果大佬高阶技巧处女秀

    职领office达人学院第817个原创技巧 职领office达人学院社群里有小伙伴提到这样一个问题:求各编号对应的值中,非重复值的数量? 这道题的解法有很多,可以用powerquery,也可以用pow ...

  • 有了这个函数,再也不用万金油了。

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.不可否认,office365新增函数的功能很强大,很实用.以前很复杂的问题,比如提取不重复值,一对多查询,多关键字排序等,现在轻而易举搞定. 今天 ...

  • Excel 有了Filter函数VLOOKUP函数要靠边站了

    微软在Office 365引入了一个非常强大的函数,FIlter函数,从名称可以理解,该函数可以实现数据过滤功能,过去不能通过VLOOKUP,MATCH等函数完成的数据多匹配功能,今后就可以通过这个函 ...

  • PowerBI公式

    高级筛选器 Filter函数 度量值工作的两大核心步骤是筛选和计算,筛选函数是制定计算的范围,聚合函数的用途是计算.如果你能够领悟第一阶段学习的筛选和聚合共10个函数以及上下文的概念,你就掌握了度量值 ...

  • 函数功力哪家强,365里把身藏

    函数功力哪家强,365里把身藏

  • 编程语言PHP删除数组中的空值的函数array_filter

    以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下:PHP代码 <?phpforeach( $array as $k=>$v ...

  • Excel公式技巧71:查找一列中有多少个值出现在另一列中

    excelperfect 有时候,我们想要知道某列中有多少个值同时又出现在另一列中,例如下图1所示,列B中有一系列值,列D中有一系列值,哪些值既出现有列B中又出现在列D中.因为数据较少,不难看出,在列 ...

  • OFFICE 365的两个筛选函数,颠覆了我对Excel的认知③

    最近推送的五篇文章: OFFICE 365的FILTER函数,颠覆了我对Excel的认知② OFFICE 365的这些功能,颠覆了我对Excel的认知① 你真的理解了相对引用?这三点95%的人都不会, ...

  • OFFICE 365的这些功能,颠覆了我对Excel的认知①

    最近推送的五篇文章: 你真的理解了相对引用?这三点95%的人都不会,你呢? SUBTOTAL函数:统计筛选出的数据,就用它 [一本不正经系列]我把Excel玩坏了! 一本不正经地用Excel画了个.. ...

  • Office 365函数新世界 :SEQUENCE和RANDARRAY函数

    我们之前先后聊了UNIQUE.SORT.FILTER和XLOOKUP,本章再聊剩下两个函数:SEQUENCE和RANDARRAY. 先来说SEQUENCE,这个单词是序列的意思,顾名思义,主要作用是制 ...

  • Office 365函数新世界:XLOOKUP

    HI,大家好,我是星光. 前段时间微软在365版本中更新了一个新函数,叫做XLOOKUP.一时间闹得沸沸扬扬,很多人宣称这家伙将彻底淘汰VLOOKUP,甚至有人说微软即将把VLOOKUP抛弃了--胡扯 ...

  • Office 365函数新世界:快速排序

    打个响指,提一个问题. 以下图所示的数据为例,A:D是数据源,是一份成绩表,现在需要按语文成绩降序排列,结果如F:G列所示. 你会怎么写函数公式呢? 常规的解法套路是这样的▼ F2单元格输入数组公式▼ ...

  • Office 365函数新世界 :计算不重复数

    数据去重复是工作表函数长久以来的痛点之一,为了实现这个功能,前辈们煞费苦心,钻研各种套路,但最终成型的公式要么复杂要么效率低下,所以一旦有人询问大量数据动态去重复的问题,会函数的那人往往脸一拉,手一抬 ...

  • Office 365函数新世界 (1)

    革新一个旧的函数体系,无外乎从这么几个方面入手,函数的运行效率.函数的编写方式以及扩展新的函数功能.今天咱们就学习一下,看看365新函数是如何通过这三个方面打破旧函数条条框框的. 365函数系列推出了 ...

  • 简单激活安装office 365的全部功能,告别短期订阅,永久免费使用

    简单激活安装office 365的全部功能,告别短期订阅,永久免费使用

  • Python中lambda用法和filter()函数

    "微信公众号" 目录 1. lambda用法. 2. filter()用法. 1. lambda用法. Python使用lambda来创建匿名函数. lambda只是一个表达式,函 ...