Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如果值匹配,则查找并重复单元格值_Arrays_Google Sheets_Google Sheets Formula_Array Formulas_Gs Vlookup - Fatal编程技术网

Arrays 如果值匹配,则查找并重复单元格值

Arrays 如果值匹配,则查找并重复单元格值,arrays,google-sheets,google-sheets-formula,array-formulas,gs-vlookup,Arrays,Google Sheets,Google Sheets Formula,Array Formulas,Gs Vlookup,我的电子表格正在从表单收集数据 在另一个选项卡上,我显示了与“Lesson day”和“Today’s date”匹配的响应(在本例中,显示了所有课程) 如您所见,“电子邮件”字段只填写一次。 是否有办法自动填写第二个选项卡中的“电子邮件”字段?也许将“学生代码”与第一个选项卡中的“电子邮件”字段相匹配 我尝试了MATCH()函数,但它只返回位置。我觉得我需要将MATCH()与其他函数结合起来,但我不知道从哪里开始 编辑:把电子邮件地址放在另一个专栏上也行。 类似于:如果两个选项卡中的“学生

我的电子表格正在从表单收集数据

在另一个选项卡上,我显示了与“Lesson day”和“Today’s date”匹配的响应(在本例中,显示了所有课程)

如您所见,“电子邮件”字段只填写一次。 是否有办法自动填写第二个选项卡中的“电子邮件”字段?也许将“学生代码”与第一个选项卡中的“电子邮件”字段相匹配

我尝试了MATCH()函数,但它只返回位置。我觉得我需要将MATCH()与其他函数结合起来,但我不知道从哪里开始

编辑:把电子邮件地址放在另一个专栏上也行。
类似于:如果两个选项卡中的“学生代码”匹配,则显示该“学生代码”的电子邮件地址。

通常匹配与索引相结合

您应该构建一个辅助表,其中一列用于名称,另一列用于电子邮件


要从收集的数据中构建辅助表,可以使用如下内容

=UNIQUE(FILTER({Lessons!E:E,Lessons!G:G},LEN(Lessons!G:G)))
上述方法优于为每列使用公式,因为这样可以防止数据不匹配

索引/匹配通常不会在数组公式中返回“预期”结果。而是使用VLOOKUP

注:

请记住,每次编辑值时,公式都将重新计算。如果您有很多公式(例如,在填充时将公式复制到列中的所有单元格),或者有一个带有开放式引用的数组公式,例如G2:G,这可能会影响电子表格的性能

如果要使用ARRAYFORMULA,请使用ARRAY_Constraint来限制公式返回的行数

相关的


根据建议,我创建了一个辅助表(仅称为Sheet7)并越来越接近所需的结果

在我用过的专栏里

=UNIQUE(Lessons!E:E)
在B栏中,我使用了

=INDEX(Lessons!A:M, MATCH(A2,Lessons!E:E,0),7)
然后,在我的第二个电子表格中,我可以使用以下公式获得所有电子邮件地址

=INDEX(Sheet7!A:B, MATCH(D4,Sheet7!A:A,0),2)
我试着在辅助表上使用ArrayFormula

ARRAYFORMULA(if(A2:A="",,INDEX(Lessons!A:M, MATCH(A2:A,Lessons!E:E,0),7)))
但它不起作用。它只显示与单元格A2匹配的电子邮件地址,忽略A3、A4、…

尝试:

=ARRAYFORMULA(IFNA(VLOOKUP(D4:D, FILTER({form!E2:E, form!G2:G}, form!G2:G<>""), 2, 0)))
=ARRAYFORMULA(IFNA(VLOOKUP(D4:D,FILTER({form!E2:E,form!G2:G},form!G2:G“”),2,0)))
更改
表单
以匹配表单的表单名称

另一种方法:

  • 在您的表单回复表中增加一个名为“学生电子邮件”的列(在本例中为“I”列)
  • 在该列的第2行中,写出以下公式:
  • =数组公式(IF(为空(G2:G)、VLOOKUP(F2:F,间接(“F$2:G”)和ROW(I2:I),TRUE)、2)、G2:G)

  • 将该列用于其他选项卡中的电子邮件(隐藏原始电子邮件列)

  • 更新:
    使用数组公式,您不必手动拖放。随着新行的增加,它会继续运行。

    这是一个很好的方法!!但发现了两个问题:1。它显示一个空单元格作为最后一行2的结果。该文件正在从窗体收集响应。我不能每次有新的问题时都把公式拖下去response@Alex我更新了我的答案,它应该适用于所有行。最后一行的结果是错误的。我有“Student2”,但它显示了“Student1”的电子邮件地址,似乎有一个额外的括号。我试图删除它,但得到一个错误:公式解析error@Alex已修复,请立即尝试此问题应作为后续问题或问题编辑发布。对每列使用公式是个坏主意,因为这可能会导致数据不匹配。并非所有内置函数都能“按预期”使用ARRAYFORMULA。使用VLOOKUP代替索引+匹配。