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

Find and repeat a cell value if values match

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

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

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

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

编辑:将电子邮件地址放在另一列上也可以。 诸如此类:如果 2 个选项卡中的“学生代码”匹配,则显示该“学生代码”的电子邮件地址

通常MATCH与INDEX结合使用

您应该构建一个辅助 table,其中一列用于名称,另一列用于 ee-mails。


要从收集的数据构建辅助 table,您可以使用类似这样的东西

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

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

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

备注:

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

如果您打算使用 ARRAYFORMULA,请使用 ARRAY_CONSTRAIN 来限制您的公式 return 编辑的行数。

相关

按照建议,我创建了一个辅助 table(刚刚称为 Sheet7)并越来越接近所需的结果

在我用的A专栏里

=UNIQUE(Lessons!E:E)

在 B 列中我使用了

=INDEX(Lessons!A:M, MATCH(A2,Lessons!E:E,0),7)

然后,在我的第二个电子表格中,我可以使用以下公式

获取所有 e-mail 地址
=INDEX(Sheet7!A:B, MATCH(D4,Sheet7!A:A,0),2)

我尝试在辅助上使用 ArrayFormula table

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)))

更改 form 以匹配表单的 sheet 名称 sheet

另一种方法:

  1. 在您的表单回复中创建一个额外的列 sheet 称为“学生 E-mail”。(在本例中为“I”列)
  2. 在该列的第 2 行中,写入以下公式:

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

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

更新:

使用数组公式,无需手动拖放。随着新行的添加,它会继续运行。