如何使用谷歌表的QUERY函数--标准条款和替代工具

  • Share This
Michael Brown

如果你关注这个博客有一段时间了,你可能还记得谷歌表格的QUERY功能。 我提到它是几个案例的可能解决方案。 但这些远远不足以发掘它的全部潜力。 今天,是时候让我们正确认识这个电子表格的超级英雄了。 你猜怎么着--一个同样值得注意的工具也将出现在那里 :)

你知道谷歌表的QUERY函数被认为是电子表格中最强大的函数吗? 它奇特的语法有利于数十种不同的操作。 让我们试着把它的各个部分分解开来,一劳永逸地学习它们,好吗?

    谷歌表格QUERY函数的语法

    乍一看,Google Sheets QUERY只是另一个具有1个可选参数和2个必需参数的函数。

    =QUERY(data, query, [headers])
    • 数据 这里的一切都很清楚。

      注意:谷歌在这里只做了一个小小的提醒:每一列应该包含一种数据类型:文本、数字或布尔值。 如果有不同的类型,QUERY将使用出现最多的类型。 其他类型将被视为空单元。 很奇怪,但请记住这一点。

    • 询问 是处理的方式。 数据 ...这是所有乐趣的开始。 谷歌表的QUERY函数对这个参数使用了一种特殊的语言。 谷歌可视化API查询语言 它的写法类似于SQL。 基本上,它是一组特殊的子句(命令),用来告诉函数要做什么:选择、分组、限制等等。

      注意:整个参数必须用双引号括起来。 值也应用引号括起来。

    • 页眉 省略该参数(就像我在下面做的那样),Google Sheets QUERY会根据你的表格内容来假设。

    现在让我们更深入地挖掘这些条款和它们的作用。

    谷歌表格QUERY公式中使用的句子

    查询语言由10个子句组成。 它们乍一看可能会让人害怕,尤其是在你不熟悉SQL的情况下。 但我保证,一旦你了解了它们,你就会得到一个强大的电子表格武器供你使用。

    我将涵盖每一个条款,并利用这份假想的学生和他们的论文题目清单提供公式例子。

    是的,我是那些认为冥王星应该是一颗行星的怪人之一 :)

    提示:在一个谷歌表的QUERY函数中可以使用多个子句。 如果你将它们全部嵌套,请确保按照本文中的顺序出现。

    选择(所有或特定列)。

    第一个条款-- 选择 - 是用来告诉你需要用Google Sheets QUERY从另一个工作表或表中返回哪些列。

    例1.选择所有列

    要获取每一列,使用 选择 带星号的 - 选择 *

    =QUERY(Papers! A1:G11, "select *")

    提示:如果你省略了 选择 参数,Google Sheets QUERY将默认返回所有列。

    =QUERY(Papers!A1:G11)

    例2.选择特定列

    要想只拉出某些列,请将它们列在 选择 条款。

    =QUERY(Papers! A1:G11, "select A,B,C")

    提示:感兴趣的列将按照你在公式中提到的顺序被复制。

    =QUERY(Papers! A1:G11, "select C,B,A")

    谷歌表格查询--Where子句

    谷歌表格查询 其中 换句话说,它就像一个过滤器。

    如果你使用这个子句,谷歌表的QUERY函数将搜索符合你条件的列的值,并将所有匹配的值取回给你。

    提示。 在哪里? 可以在没有 选择 条款。

    像往常一样,为了指定条件,有一组特殊的 经营者 为你。

    • 简单的比较运算符( 用于数字值 ): =, ,>,>=, <, <=
    • 复数比较运算符( 适用于字符串 ): 包含, 开始于, 结束于, 匹配, !=(不匹配/不等于), 像 .
    • 逻辑运算符到 结合几个条件 : 和, 或, 不 .
    • 运营商为 空白/不空 : 是空,不是空 .

    提示:如果你对不得不再次处理如此巨大数量的运算符感到不安或担心,我们能理解你。 我们的多重Vlookup Matches将找到所有的匹配,并在必要时为你在谷歌表格中建立QUERY公式。

    让我们看看这些运算符在公式中是如何表现的。

    例1. 在哪里? 有数字

    我将添加 其中 到我上面的谷歌表格查询,以获得那些有10个以上卫星的行星的信息。

    =QUERY(Papers! A1:G11, "select A,B,C,F where F>=10")

    提示:我还提到了提取F列,以确保符合标准。 但这完全是可选的。 你不必将有条件的列纳入结果。

    =QUERY(Papers! A1:G11, "select A,B,C where F>=10")

    例2. 在哪里? 有文本字符串

    • 我想看到所有的行,其中的等级是 F F+ .我将使用 包含 运营商为这一点。

      =QUERY(Papers! A1:G11, "select A,B,C,G where G contains 'F'")

      注意,别忘了在你的文字周围加上引号。

    • 要获得所有带有 F 仅限,只需替换 包含 用一个等号(=)。

      =QUERY(Papers! A1:G11, "select A,B,C,G where G="F"")

    • 要检查尚未交付的论文(成绩缺失的地方),请检查栏 G 为空白。

      =QUERY(Papers! A1:G11, "select A,B,C,G where G is null'")

    例3. 在哪里? 有日期

    你猜怎么着:谷歌表的QUERY甚至能够驯服日期!

    由于电子表格将日期存储为序列号,通常情况下,你必须借助于特殊函数的帮助,如DATE或DATEVALUE、YEAR、MONTH、TIME,等等。

    但是,QUERY已经找到了解决日期问题的方法。 要正确地输入日期,只需输入单词 日期 然后添加日期本身,格式为yyyy-mm-dd。 日期'2020-01-01'

    以下是我的公式,以获得演讲日期在2020年1月1日之前的所有行。

    =QUERY(Papers! A1:G11, "select A,B,C where B

    例4.结合几个条件

    要使用某个时间段作为标准,你需要结合两个条件。

    让我们尝试检索那些在2019年秋季交付的论文。 第一个标准应该是一个日期 2019年9月1日或之后 ,第二-- 在2019年11月30日或之前 :

    =QUERY(Papers! A1:G11, "select A,B,C where B>=date '2019-09-01' and B<=date '2019-11-30'")

    或者,我可以根据这些参数来选择论文。

    • 2019年12月31日前( B )
    • 有A或A+的成绩( G包含'A'。 )
    • 或B/B+ ( G包含'B'。 )

    =QUERY(Papers! A1:G11, "select A,B,C,G where B

    提示:如果你的脑袋已经快要爆炸了,先别急着放弃。 有一个工具完全能够为你建立所有这些公式,无论有多少标准。 直接跳到文章末尾,了解一下。

    谷歌表格查询--分组

    谷歌表格查询 集团由 然而,你应该使用一些聚合函数,以便对它们进行汇总。

    请注意。 组别由 必须始终遵循 选择 条款。

    不幸的是,在我的表中没有什么可以分组,因为没有重复出现的值。 所以让我调整一下。

    假设所有试卷只由3个学生准备,我可以找到每个学生的最高成绩。 但由于他们是字母,我应该对G列应用MIN函数。

    =QUERY(Papers! A1:G11, "select A,min(G) group by A")

    注意:如果你不使用聚合函数与任何列在 选择 子句(列 A 在我的例子中),你必须将它们全部复制到 集团由 条款。

    谷歌表格查询 - 透视

    谷歌表格查询 枢轴 如果我可以这么说的话,子句的作用是反过来的,它将数据从一列转到有新列的行中,并相应地将其他值分组。

    对于那些与日期打交道的人来说,这可能是一个真正的发现。 你将能够从该来源栏中快速浏览所有不同的年份。

    注意:当涉及到 枢轴 ,每一列使用的 选择 否则,就应该在 "我的 "中提到。 集团由 命令后,你的 枢轴 .

    记住,我的表格现在只提到了3个学生。 我要让函数告诉我每个学生做了多少份报告。

    =QUERY(Papers! A1:G11, "select count(G) pivot A")

    谷歌表格查询--排序方式

    这个很简单:) 它是用来按某些列的值对结果进行排序的。

    提示:当使用 顺序 我使用 选择 为演示目的,返回较少的列。

    让我们回到我原来的表格,按演讲日期对报告进行排序。

    接下来的谷歌表查询公式会让我得到A、B和C列,但同时会在B列按日期排序。

    =QUERY(Papers! A1:G11, "select A,B,C order by B")

    边界

    如果我告诉你,你不必把每一行都带入结果中呢? 如果我告诉你,Google Sheets QUERY只能从它找到的第一个匹配中提取一定的数量呢?

    那么,在 限度 它通过给定的数字来限制要返回的行数。

    提示:可随意使用 限度 没有其他前述条款。

    这个公式将显示成绩栏中包含分数(不是空的)的前5行。

    =QUERY(Papers! A1:G11, "select A,B,C,G where G is not null limit 5")

    偏移

    这个条款与前一个条款有点相反。 而 限度 得到你指定的行数。 补偿 跳过它们,收回其余的。

    提示。 偏移 也不需要任何其他条款。

    =QUERY(Papers! A1:G11, "select A,B,C,G where G is not null offset 5")

    如果你试图同时使用 限度 补偿 ,将发生以下情况。

    1. 偏移 将跳过开始的行。
    2. 边界 将返回以下行的数量。

    =QUERY(Papers! A1:G11, "select A,B,C,G where G is not null limit 3 offset 3")

    在11行数据中(第一行是标题,Google Sheets中的QUERY函数很好地理解了这一点),offset跳过了前3行。 Limit返回3个下行(从第四行开始)。

    谷歌表格查询 - 标签

    谷歌表格查询 标签 命令让你改变列的标题名称。

    提示:其他条款是可选的,因为 标签 也是如此。

    标签 如果你重命名了几列,那么每一对新的列-标签之间用逗号隔开。

    =QUERY(Papers! A1:G11, "select A,B,C label A 'Name', B 'Date'")

    格式

    ǞǞǞ 格式 子句使得改变一列中所有值的格式成为可能。 为此,你将需要一个站在所需格式后面的模式。

    提示:格式子句也可以在谷歌表的QUERY中独奏。

    =QUERY(Papers! A1:G11, "select A,B,C limit 3 format B 'mm-dd, yyyy, ddd'")

    提示:我在这篇博文中提到了谷歌表格QUERY的一些日期格式。 其他格式可以直接取自电子表格。 格式> 数字> 更多格式> 自定义数字格式 .

    选择

    这个是用来为结果数据设置一些额外的设置。

    例如,像这样的命令 没有价值 将只返回格式化的单元格。

    建立QUERY公式的最快方法 - 多重Vlookup匹配

    无论谷歌表格中的QUERY功能有多强大,它可能需要一个学习曲线来掌握。 在一个小表上单独说明每个子句是一回事,而试图用几个子句和一个大得多的表来正确建立一切是完全不同的。

    这就是为什么我们决定把Google Sheets QUERY打扮成一个用户友好的界面,并使其成为附加组件。

    为什么多个VLOOKUP匹配比公式更好?

    好吧,有了这个附加功能,就有了 绝对没有必要 :

    • 想出 关于这些的任何事情 条款 在附加组件中创建许多复杂的条件是非常容易的:尽管他们的顺序,你需要多少就有多少,以获取你需要的匹配。

      注:目前,以下条款已被纳入该工具。 选择,哪里,限制。 补偿 如果你的任务还需要其他条款,请在下面评论--也许,你会帮助我们改进;)

    • 知道如何 输入操作员 :只需从下拉列表中挑选一个。
    • 疑惑 正确的 输入日期和时间的方法 该插件可以让你根据你的电子表格地区设置,按照你以前的方式输入它们。

      提示:工具中总是有一个提示,有不同数据类型的例子。

    作为一个 奖金 ,你将能够。

    • 预览 俩人都是 结果和公式
    • 使 快速调整 根据您的标准
    • 选择一个 结果的地方
    • 插入 的结果既是 查询公式或 作为 价值

    我不是在开玩笑,你自己看吧。 虽然这个GIF被加速了,但我花了不到一分钟的时间来微调所有的标准并得到结果。

    如果你有足够的好奇心,这里有一个详细的视频,展示了该插件的工作原理。

    我希望你能给这个插件一个机会,并从Google Workspace Marketplace获得它。 不要害羞,分享你的反馈,特别是如果它有什么你不喜欢的地方。

    此外,请随时查看其教程页面或主页。

    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.