如何使用谷歌表的FILTER功能

  • Share This
Michael Brown

如果你知道在谷歌表格中创建过滤器的唯一方法是标准工具,我有一个惊喜给你。 :) 来和我一起探索FILTER功能。 有很多现成的公式你可以借用,还有一个新的强大的工具,极大地补充了过滤工具集。

前段时间,我们介绍了如何使用标准工具在Google Sheets中进行过滤。 我们提到了如何通过数值和条件进行过滤。 然而,电子表格中的内容总是比我们知道的要多。 这一次,我将和你一起探讨Google Sheets的FILTER功能。

你不会在Excel中找到它,所以它绝对值得一查。

    谷歌表FILTER函数的语法

    谷歌表格中的FILTER扫描你的数据并返回符合你标准的所需信息。

    与标准的谷歌表格过滤器不同,该函数不会对你的原始数据做任何处理。 它复制找到的行,并把它们放在你建立公式的地方。

    语法相当简单,因为每个参数都是自己说的。

    =FILTER(range, condition1, [condition2, ...] )
    • 范围 是你想过滤的数据。 需要。
    • 条件1 是一个列或行,以及它应该属于的TRUE/FALSE标准。 需要。
    • condition2,... ,等,代表其他列/行和/或其他标准。 可选。

    注:每个 条件 的大小应与 范围 .

    注意:如果你使用多个条件,它们都应该是针对列或行的。 Google Sheet FILTER函数不允许混合条件。

    现在,有了这些说明,让我们看看不同公式的论据是如何形成的。

    如何在谷歌表格中使用FILTER函数

    我将向你展示所有的例子,同时过滤一个我跟踪一些订单的小表格。

    该表包含20行各种类型的数据,这对于学习函数是非常完美的。

    如何在谷歌表格中通过文本过滤

    例1.文本正好是

    首先,我将要求函数只显示那些迟到的订单。 我输入要过滤的范围 - A1:E20 - 然后设置条件--列 E 应等于 迟到的 :

    =FILTER(A1:E20,E1:E20="Late")

    例2.文本正好不是

    我可以要求该函数得到所有的订单,但不包括那些迟到的订单。 为此,我需要一个特殊的比较运算符(),表示 不等于 :

    =FILTER(A1:E20,E1:E20"Late")

    例3.文本包含

    现在我想告诉你如何根据部分匹配建立谷歌表的FILTER功能。 或者换句话说--如果 文本包含 .

    你是否注意到A列中的订单ID在结尾处含有国家缩写? 让我们创建一个公式,只检索从加拿大发货的订单( CA ).

    通常情况下,你会使用通配符来完成这项任务。 但当涉及到FILTER公式时,是FIND和SEARCH函数以这种方式操作。

    提示:如果你希望在通过简单的单词出现进行过滤时避免嵌套其他函数,请随时尝试最后描述的附加功能。

    注意:如果文本的大小写很重要,请使用FIND,否则请选择SEARCH。

    在我的例子中,SEARCH功能就可以做得很好,因为文本大小写是不相关的。

    =SEARCH(search_for, text_to_search, [starting_at])
    • 搜索_for 是我想找到的文本,用双引号包住它是非常重要的。 "ca" ...需要。
    • 文本_to_search 是扫描所需文本的范围。 它是 A1:A20 对我来说。
    • 开始时间 表示搜索的起始位置--从哪个字符开始搜索。 它完全是可选的,但我需要使用它。 你看,所有的订单ID都由字母和数字组成,意味着一对 CA 所有ID的相同模式使我能够寻找到 CA 从第8个字符开始。

    将所有这些部分收集在一起后,我得到了想要的结果。

    =FILTER(A1:E20,SEARCH("ca",A1:A20,8))

    如何在谷歌表格中按日期和时间过滤

    按日期和时间过滤也需要使用额外的函数。 根据你的标准,你可能需要在Google Sheets的主要FILTER函数中嵌入DAY、MONTH、YEAR,甚至DATE和TIME。

    提示:如果你不熟悉这些,或者总是把日期搞得一团糟--不用担心。 最后描述的工具根本不需要任何功能。

    例1.日期是

    为了掌握那些在2020年1月9日到期的订单,我将邀请DATE功能。

    =FILTER(A1:E20,C1:C20=DATE(2020,1,9))

    注意:这只有在你的单元格不包含时间单位和日期的情况下才有效(你的电子表格可能默认添加了时间单位)。 要确定这一点,只需选择一个单元格并检查公式栏中出现的内容。

    如果时间在那里,而且删除它不是一个选项,你应该在你的Google Sheets FILTER函数中使用QUERY或一个更复杂的条件,像这样。

    =FILTER(A1:E20,C1:C20>=DATE(2020,1,9),C1:C20

    提示:我在下面更详细地谈了多种条件。

    例2.日期包含

    如果你只对某月或某年感兴趣,你可以用MONTH和YEAR函数来完成。 把带有日期的范围直接放入( C1:C20 ),并指定它应该等于哪个月(或年)的数字( =1 ):

    =FILTER(A1:E20,MONTH(C1:C20)=1)

    例3.日期是之前/之后

    为了获得指定日期之前或之后的数据,你将需要DATE函数和诸如大于(>)、大于或等于(>=)、小于(<)、小于或等于(<=)等比较运算符。

    以下是2020年1月1日及以后收到的订单。

    =FILTER(A1:E20,D1:D20>=DATE(2020,1,1))

    当然,你可以很容易地在这里用月或年来代替日期,其结果与上面的结果没有区别。

    =FILTER(A1:E20,YEAR(D1:D20)>=2020)

    例4.时间

    在谷歌表上按时间过滤时,操作方法与日期完全相同。 你使用附加的时间功能。

    例如,如果只想获得时间戳在下午2点以后的日子,公式为:。

    =FILTER(A1:B10,A1:A10>TIME(14,0,0))

    然而,当涉及到使用HOUR函数时(就像日期的MONTH一样),游戏就有点变化了。 在电子表格中,时间已经很棘手了,所以有必要做一些调整。

    要返回所有时间戳在以下范围内的记录 下午2:00 12:00 PM ,这样做。

    1. 用时间戳括住该范围( A1:A10 )在一个单独的HOUR函数中。 这将表明要在哪里寻找。
    2. 然后再增加一个HOUR功能来设置时间本身。

    =FILTER(A1:B10,HOUR(A1:A10)>=HOUR("2:00:00 PM"))

    提示:看到结果不包括 12:41 PM 这是因为电子表格将其视为 00:41 小于 2:00 .

    如果你找到一个更优雅的解决方案,请在下面的评论区分享。

    如何在谷歌表格中使用单元格引用进行过滤

    每次创建谷歌表过滤公式时,你都需要按原样输入条件:是否是一个单词或其部分,日期等,除非你熟悉单元格引用。

    它们使很多关于公式的事情变得更容易。 因为你可以简单地用条件来引用单元格,而不是把所有东西都打出来。

    还记得我是如何寻找所有迟到的订单的吗? 我可以快速参考E4的文本 迟到的 也要这样做。

    =FILTER(A1:E20,E1:E20=E4)

    结果不会有任何不同。

    你可以对上述所有公式进行重复操作。 例如,避免添加更多像DATE这样的函数,而只是参考有兴趣的日期的单元格。

    =FILTER(A1:E20,C1:C20=C15)

    提示:单元格引用也可以让你从另一个工作表进行过滤。 你只需要带上工作表的名称。

    =FILTER(Orders! A1:E20,Orders! C1:C20=Orders! C15)

    谷歌表的FILTER公式有多个标准

    虽然我之前在所有的Google Sheet过滤公式中主要使用一个条件,但更多的情况是你需要一次通过几个条件来过滤一个表格。

    例1.IS BETWEEN逻辑

    要找到所有落在两个数字/日期/时间之间的行,函数的可选参数将派上用场 -- 条件2 , 条件3 你只是每次重复相同的范围,但有一个新的条件。

    听着,我只打算退回那些花费超过250美元但低于350美元的订单。

    =FILTER(A1:E20,B1:B20>=250,B1:B20<350)

    例2.谷歌表FILTER函数中的OR逻辑

    遗憾的是,要想获得所有在感兴趣的一列中包含不同记录的行,以前的方法是不行的。 那么,我怎样才能检查所有既在路上又迟到的订单呢?

    如果我真的尝试以前的方法,把每个订单状态输入到一个单独的条件,我会得到#N/A的错误。

    因此,为了正确设置FILTER函数中的OR逻辑,我应该把这两个条件加到一个条件中。

    =FILTER(A1:E20,(E1:E20="Late")+(E1:E20="On way")

    将过滤器添加到谷歌表的多列中

    比对一列应用几个条件更有可能的是在谷歌表格中为多列创建一个过滤器。

    参数都是一样的。 但公式的每一个新部分都需要一个新的范围,有自己的标准。

    让我们试着让谷歌表格中的FILTER函数返回属于以下所有规则的订单。

    1. 它们的价值应该是200-400美元。

      A1:E20,B1:B20>=200,B1:B20<=400

    2. 是在2020年1月到期。

      月(c1:c20)=1

    3. 而且还在路上。

      E1:E20="在路上"

    把所有这些部分放在一起,你的谷歌表多列过滤公式就准备好了。

    =FILTER(A1:E20,B1:B20>=200,B1:B20<=400,MONTH(C1:C20)=1,E1:E20="on the way")

    先进的谷歌表格过滤器的无公式方法

    FILTER函数是伟大的,但有时它可能是太多了。 追踪所有的参数、定界符、嵌套函数和其他东西可能是非常混乱和耗时的。

    幸运的是,我们有一个更好的解决方案,它同时超越了谷歌表的FILTER功能和他们的标准工具--多重VLOOKUP匹配。

    不要被它的名字所迷惑,它类似于谷歌表的VLOOKUP函数,因为它可以搜索匹配的内容。 就像FILTER函数一样。 就像我上面做的那样。

    这里有 5个主要优势 的工具 在谷歌表的FILTER功能上。

    1. 你不必考虑 不同条件下的操作者 - 就选一个 从列表中。

  • 像往常一样输入日期和时间 在电子表格中 - 没有更多的特殊功能。
  • 创建和删除 多重条件 多列真正的快速 :
  • 预览结果 并调整条件(如果需要),然后再将所有内容粘贴到你的工作表上。
  • 得到的结果是数值或 作为一个现成的 公式 .
  • 我真心鼓励你安装Multiple VLOOKUP Matches,并给它一个机会。 要仔细查看它的选项,请访问其教程页面或观看专门的教学视频。

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.