Sql Google Sheets-当主工作表设置为条件时,从另一个工作表创建“主摘要”的查询

Sql Google Sheets-当主工作表设置为条件时,从另一个工作表创建“主摘要”的查询,sql,google-sheets,google-query-language,Sql,Google Sheets,Google Query Language,我正在努力写一个查询 我有一个谷歌工作表,我需要写一个查询,以便创建一个主摘要。该列是主选项卡上的U列。基本上,我需要从与列T中的名称匹配的工作表中导入列C、D、E和F,以获得与行匹配的选定名称 我知道我需要查询单个工作表并导入信息,例如 =QUERY(MASTER!T:T,"SELECT MIRANDA! C,D,E,F WHERE MASTER!T:T ='Miranda'",0) 但是我没有任何进展。我的另一个想法是运行一个SELECT函数,比如 =SELECT MIRANDA (C,D

我正在努力写一个查询

我有一个谷歌工作表,我需要写一个查询,以便创建一个主摘要。该列是主选项卡上的U列。基本上,我需要从与列T中的名称匹配的工作表中导入列C、D、E和F,以获得与行匹配的选定名称

我知道我需要查询单个工作表并导入信息,例如

=QUERY(MASTER!T:T,"SELECT MIRANDA! C,D,E,F WHERE MASTER!T:T ='Miranda'",0)
但是我没有任何进展。我的另一个想法是运行一个SELECT函数,比如

=SELECT MIRANDA (C,D,E,F) WHERE MASTER!T:T ='Miranda'

但这也是错误的:我怀疑我的语法不正确,因为我还在学习SQL。我相信谷歌的应用程序使用了一个稍微修改过的版本。我做错了什么?

查询函数的第一部分是要查询的范围。第二部分是要抓住什么。所以我想你可能在寻找这个:

=QUERY(MASTER!A:T,"SELECT C,D,E,F WHERE T ='Miranda'",0)
并且您将不会收到任何列标题,因为0表示不使用任何行作为标题

这将列出T为Miranda的行的C、D、E和F列

编辑:

由于您没有在每个单独的表单中显示时间戳,因此很难获得一个匹配项,但是只要表单中需要,M列应该可以相当安全地进行检查

=FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2)
将为Miranda选项卡中与M2值匹配的行返回单元格数组C到F。按原样,它将把这些放在包含公式和下一个3的列中。要将它们放在一个单元格中,您需要加入它们:

=join("|",FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2))
这将在每个列项目之间放置|字符。把它变成你想要的样子

因此,要通过获取单元格T的值来实现这一点,您需要:

=join("|",FILTER(INDIRECT( T2 & "!C:F"), INDIRECT( T2 & "!C:C")=M2))
另一个选项,特别是如果您在每个选项卡中包含时间戳,将使用vlookup查找时间戳列。使用M列时,它可能不起作用,但:

=VLOOKUP(M2, INDIRECT( T2 & "!C:F"), 1, FALSE)

由于您使用的是自定义脚本,因此也可以使用自定义脚本向下复制公式,因为您无法将arrayformula应用于这些方法中的任何一种。我相信有几个例子脚本可以做到这一点。问题是通过引用另一个单元格来获取范围。我知道的唯一方法是使用间接函数,它不支持数组。另一个选项是编写一个自定义公式,返回所需的范围值,并使用arrayformula。

它确实可以按规定工作,但我需要的是从主列T中的图纸名称导入列C、D、E、F,我想我需要的是能够告诉SELECT参数要从哪个表中导入一个简单的方法,我想实现这一点的方法是告诉客户,我需要他们在每个单独的表上创建另一列来查询主表,并将这些列导入主表。最好是,我想给他们所要求的功能。明白了。我想我有你想要的。问题是,U列返回了什么信息?我将更新我的答案以反映这一点,但在主表的V2中加入了一个公式,得到了我认为您需要的内容,但目前返回了Miranda表中的所有行。他们需要在单独的表Miranda、Piper….中包含C、D、E和F列的内容。。。。要导入到母版页的U列中。因此,最终我还必须使查询具有条件,或者针对每种可能性附加不同的查询,我还必须找到格式化它的方法。但我想先抓住基本点:参见上面的编辑。我认为没有一个简单的方法可以做到这一点,而不复制一个公式下来。问题是需要为范围引用单元格。希望有人能更好地教育我们。