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

时间:2020-08-13 03:20:13

标签: arrays google-sheets google-sheets-formula array-formulas gs-vlookup

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

Responses from Google Form

在另一个选项卡上,我将显示与“课程日期”和“今天的日期”匹配的响应(在示例中,显示了所有课程)。

Second tab

如您所见,“电子邮件”字段仅填写一次。 有没有一种方法可以自动填充第二个选项卡中的“电子邮件”字段?也许将“学生代码”与第一个标签中的“电子邮件”字段进行匹配?

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

编辑:将电子邮件地址放在另一列也可以。 大概是这样:如果两个标签中的“学生代码”匹配,请显示该“学生代码”的电子邮件地址

4 个答案:

答案 0 :(得分:2)

尝试:

=ARRAYFORMULA(IFNA(VLOOKUP(D4:D, FILTER({form!E2:E, form!G2:G}, form!G2:G<>""), 2, 0)))

更改form以匹配表单工作表的工作表名称

答案 1 :(得分:0)

通常MATCH与INDEX结合

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


要从收集到的数据中构建辅助表,您可以使用类似的

=UNIQUE(FILTER({Lessons!E:E,Lessons!G:G},LEN(Lessons!G:G)))

上面的方法比在每一列中使用公式更好,因为这样可以防止数据不匹配。

INDEX / MATCH通常不会在ARRAYFORMULA中返回“预期”结果。而是使用VLOOKUP。

注意:

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

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

相关

答案 2 :(得分:0)

根据建议,我创建了一个辅助表(简称为Sheet7),并且越来越接近期望的结果

Auxiliary Table

在我使用的列中

=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,...

答案 3 :(得分:0)

另一种方法:

  1. 在表单响应表中额外添加一列“学生电子邮件”。(在本示例中为“ I”列)
  2. 在该列的第2行中,输入以下公式:

=ARRAYFORMULA(IF(ISBLANK(G2:G),VLOOKUP(F2:F,INDIRECT("F$2:G"&ROW(I2:I),TRUE),2),G2:G))

  1. 将该列用于其他标签中的电子邮件(隐藏原始电子邮件列)

更新:

使用数组公式,您无需手动拖放。并且随着添加新行而不断发展。