Arrays 如果值匹配,则查找并重复单元格值
我的电子表格正在从表单收集数据 在另一个选项卡上,我显示了与“Lesson day”和“Today’s date”匹配的响应(在本例中,显示了所有课程) 如您所见,“电子邮件”字段只填写一次。 是否有办法自动填写第二个选项卡中的“电子邮件”字段?也许将“学生代码”与第一个选项卡中的“电子邮件”字段相匹配 我尝试了MATCH()函数,但它只返回位置。我觉得我需要将MATCH()与其他函数结合起来,但我不知道从哪里开始 编辑:把电子邮件地址放在另一个专栏上也行。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()与其他函数结合起来,但我不知道从哪里开始 编辑:把电子邮件地址放在另一个专栏上也行。 类似于:如果两个选项卡中的“学生
类似于:如果两个选项卡中的“学生代码”匹配,则显示该“学生代码”的电子邮件地址。通常匹配与索引相结合 您应该构建一个辅助表,其中一列用于名称,另一列用于电子邮件
要从收集的数据中构建辅助表,可以使用如下内容
=UNIQUE(FILTER({Lessons!E:E,Lessons!G:G},LEN(Lessons!G:G)))
上述方法优于为每列使用公式,因为这样可以防止数据不匹配
索引/匹配通常不会在数组公式中返回“预期”结果。而是使用VLOOKUP
注:
请记住,每次编辑值时,公式都将重新计算。如果您有很多公式(例如,在填充时将公式复制到列中的所有单元格),或者有一个带有开放式引用的数组公式,例如G2:G,这可能会影响电子表格的性能
如果要使用ARRAYFORMULA,请使用ARRAY_Constraint来限制公式返回的行数
相关的
=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)))
更改表单
以匹配表单的表单名称另一种方法:
=数组公式(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代替索引+匹配。