Table of contents
如果你关注这个博客有一段时间了,你可能还记得谷歌表格的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")
如果你试图同时使用 限度 和 补偿 ,将发生以下情况。
- 偏移 将跳过开始的行。
- 边界 将返回以下行的数量。
=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获得它。 不要害羞,分享你的反馈,特别是如果它有什么你不喜欢的地方。
此外,请随时查看其教程页面或主页。