如果您需要在 Google 表格中操作数据,QUERY 功能可以提供帮助!它为您的电子表格带来了强大的数据库式搜索功能,因此您可以以您喜欢的任何格式查找和过滤数据。我们将引导您了解如何使用它。
使用查询功能
如果您曾经使用 SQL 与数据库进行过交互,那么掌握 QUERY 函数并不难。典型的 QUERY 函数的格式类似于 SQL,并将数据库搜索的强大功能带到了 Google 表格中。
使用 QUERY 函数的公式格式为. 您将“数据”替换为您的单元格范围(例如,“A2:D12”或“A:D”),并将“查询”替换为您的搜索查询。
=QUERY(data, query, headers)
可选的“headers”参数设置要包含在数据范围顶部的标题行数。如果您有一个跨两个单元格的标题,例如 A1 中的“First”和 A2 中的“Name”,这将指定 QUERY 使用前两行的内容作为组合标题。
在下面的示例中,Google 表格电子表格的工作表(称为“员工列表”)包含员工列表。它包括他们的姓名、员工 ID 号、出生日期以及他们是否参加过强制性员工培训课程。
在第二张表上,您可以使用 QUERY 公式提取所有未参加强制培训课程的员工的列表。此列表将包括员工 ID 号、名字、姓氏以及他们是否参加了培训课程。
要使用上面显示的数据执行此操作,您可以键入. 这将查询“员工列表”表上从 A2 到 E12 范围内的数据。
=QUERY('Staff List'!A2:E12, "SELECT A, B, C, E WHERE E = 'No'")
与典型的 SQL 查询一样,QUERY 函数选择要显示的列 (SELECT) 并标识搜索参数 (WHERE)。它返回 A、B、C 和 E 列,提供所有匹配行的列表,其中 E 列(“参加培训”)中的值是包含“否”的文本字符串。
如上所示,初始列表中的四名员工尚未参加培训课程。QUERY 函数提供了此信息,以及匹配的列以在单独的列表中显示他们的姓名和员工 ID 号。
这个例子使用了一个非常具体的数据范围。您可以更改此设置以查询 A 到 E 列中的所有数据。这将允许您继续将新员工添加到列表中。每当您添加新员工或有人参加培训课程时,您使用的 QUERY 公式也会自动更新。
正确的公式是 。此公式忽略单元格 A1 中的初始“员工”标题。
=QUERY('Staff List'!A2:E, "Select A, B, C, E WHERE E = 'No'")
如果您将未参加培训的第 11 位员工添加到初始列表中,如下所示 (Christine Smith),QUERY 公式也会更新,并显示新员工。
高级查询公式
QUERY 函数用途广泛。它允许您使用其他逻辑运算(如 AND 和 OR)或 Google 函数(如 COUNT)作为搜索的一部分。您还可以使用比较运算符(大于、小于等)来查找两个数字之间的值。
将比较运算符与 QUERY 一起使用
您可以将 QUERY 与比较运算符(例如小于、大于或等于)一起使用来缩小和过滤数据。为此,我们将在“员工列表”表中添加一个额外的列 (F),其中包含每个员工获得的奖项数量。
使用 QUERY,我们可以搜索至少获得过一项奖项的所有员工。这个公式的格式是 。
=QUERY('Staff List'!A2:F12, "SELECT A, B, C, D, E, F WHERE F > 0")
这使用大于比较运算符 (>) 来搜索列 F 中大于零的值。
上面的示例显示 QUERY 函数返回了一个包含八名获得一个或多个奖项的员工的列表。在 11 名员工中,有 3 人从未获奖。
将 AND 和 OR 与 QUERY 一起使用
嵌套逻辑运算符函数(如 AND 和 OR )在较大的 QUERY 公式中运行良好,可将多个搜索条件添加到公式中。
测试 AND 的一个好方法是搜索两个日期之间的数据。如果我们使用员工列表示例,我们可以列出从 1980 年到 1989 年出生的所有员工。
这也利用了比较运算符,例如大于或等于 (>=) 和小于或等于 (<=)。
这个公式的格式是 。这还使用了一个额外的嵌套 DATE 函数来正确解析日期时间戳,并查找介于 1980 年 1 月 1 日和 1989 年 12 月 31 日之间的所有生日。
=QUERY('Staff List'!A2:E12, "SELECT A, B, C, D, E WHERE D >= DATE '1980-1-1' and D <= DATE '1989-12-31'")
如上图,1980 年、1986 年和 1983 年出生的三名员工符合这些要求。
您也可以使用 OR 来产生类似的结果。如果我们使用相同的数据,但切换日期并使用 OR,我们可以排除所有出生于 1980 年代的员工。
此公式的格式为 .
=QUERY('Staff List'!A2:E12, "SELECT A, B, C, D, E WHERE D >= DATE '1989-12-31' or D <= DATE '1980-1-1'")
在最初的 10 名员工中,有 3 名出生于 1980 年代。上面的例子显示了剩下的七个人,他们都是在我们排出的日期之前或之后出生的。
将 COUNT 与 QUERY 一起使用
除了简单地搜索和返回数据之外,您还可以将 QUERY 与其他函数(如 COUNT)混合来操作数据。假设我们要清楚名单上所有参加过和未参加过强制性培训课程的员工。
为此,您可以像这样将 QUERY 与 COUNT 结合使用 。
=QUERY('Staff List'!A2:E12, "SELECT E, COUNT(E) group by E")
关注 E 列(“参加培训”),QUERY 函数使用 COUNT 计算找到每种类型值(“是”或“否”文本字符串)的次数。在我们的名单中,六名员工已完成培训,四名尚未完成。
您可以轻松更改此公式并将其与其他类型的 Google 函数(如 SUM)一起使用。