Google sheets 在多个选项卡之间构造查询以按名称连接值

Google sheets 在多个选项卡之间构造查询以按名称连接值,google-sheets,Google Sheets,我正试图在GoogleSheets中编写一个SQL查询,试图从两个不同的选项卡中获取“匹配”结果的数据,但遇到了一些麻烦 这是一个表,基本上是一个自动评分引擎,供参加两部分测试(书面和实践)的讲师使用。输入结果后,我想使用一些SQL从两个选项卡获取结果,并将它们整理成最终分数 有一个“实际分数”选项卡(它从相关的谷歌表单中获取所有数据),还有一个“书面分数”选项卡。我想获得在这两个选项卡中匹配的讲师的姓名,并为他们给出相关的分数,但我在编写正确的SQL时遇到了很多困难 我想做的大部分工作都很好

我正试图在GoogleSheets中编写一个SQL查询,试图从两个不同的选项卡中获取“匹配”结果的数据,但遇到了一些麻烦

这是一个表,基本上是一个自动评分引擎,供参加两部分测试(书面和实践)的讲师使用。输入结果后,我想使用一些SQL从两个选项卡获取结果,并将它们整理成最终分数

有一个“实际分数”选项卡(它从相关的谷歌表单中获取所有数据),还有一个“书面分数”选项卡。我想获得在这两个选项卡中匹配的讲师的姓名,并为他们给出相关的分数,但我在编写正确的SQL时遇到了很多困难

我想做的大部分工作都很好。我能够通过以下SQL获取最终的实际分数:

=query(PracticalScores!A2:E, "select A, count(E),SUM(E)/3 group by A")
我还可以按如下方式得出书面分数:

=query('Written Scores'!B2:C,"select B,C")
但我也想要两者的交叉点,这就是我遇到问题的地方

=query(A8:E, "select A,C,D where A = E")
将简单地返回名称匹配的行,我想要名称匹配的实例,不管行是否匹配

也就是说,我想要的是从表1到表2名称匹配的所有行,而不仅仅是恰好排成一行的几行


如果我没有解释清楚,请让我知道,我可以提供额外的信息。任何帮助都将不胜感激

由于
查询
函数不支持联接,因此不能在一个查询中完成所有操作。相反,可以使用以下设备:

=arrayformula(vlookup(name column, table, # of column to extract, False))
例如,假设我有一张桌子

+---+-------+---+
|   |   A   | B |
+---+-------+---+
| 2 | Jim   | 3 |
| 3 | Sarah | 4 |
| 4 | Bob   | 5 |
+---+-------+---+
我想在其中添加另一列,从

+---+-------+---+
|   |   E   | F |
+---+-------+---+
| 2 | Sarah | 9 |
| 3 | Bob   | 8 |
| 4 | Jim   | 7 |
+---+-------+---+
基本思想是将公式放入C2单元

=arrayformula(vlookup(A2:A, E2:F, 2, false))
它将从E列的第一个表(A列)中查找每个名称,并在F列中返回匹配值。结果:

+---+-------+---+---+
|   |   A   | B | C |
+---+-------+---+---+
| 2 | Jim   | 3 | 7 |
| 3 | Sarah | 4 | 9 |
| 4 | Bob   | 5 | 8 |
+---+-------+---+---+
实际上,应该过滤掉空的查找值以提高性能:

=arrayformula(vlookup(filter(A2:A, len(A2:A)), E2:F, 2, false))

如果第二个表包含第一个表中不存在的名称,则上述公式不会返回这些名称。在这种情况下,最好准备一个完整的姓名列表,例如

=sort(unique({Sheet1!A2:A; Sheet2!A2:A}))

它从两张纸的列中收集名称,消除重复项并进行排序。然后使用上面的
vlookup
查找这些信息。

谢谢!我认为我现在的思路是正确的,但当我自己尝试这样做时,我不断得到一个“VLOOKUP错误”,它说“错误在VLOOKUP评估中没有找到‘Adam McConnell’的值。”我现在写的VLOOKUP公式:=arrayformula(VLOOKUP(A8:a,‘书面分数’!B2:C,1,false))我想知道列的顺序现在是否出现了问题。分数数据在左栏,名称在右栏。由于工作表绑定到表单,因此我无法真正移动列(argh)。所以当我试着把公式写成“C2:B”时,谷歌认为我是个白痴,并自动将它改成“B2:C”,这是不对的。我不能在分数上匹配,我想在名字上匹配。Vlookup总是在第一列。您可以使用数组表示法来解决这个问题:例如,
{C2:C,B2:B}
是一个数组B2:C,其中列是互换的。啊,这也行!我通过使用SQL将结果拉到我想要的形状:=query('writed Scores'!A2:E,“select C,B”),然后在结果集上使用VLOOKUP解决了这个问题。