如何将 Arrayformula 与在 Google 工作表中使用动态范围的匹配函数一起使用?

How do I use Arrayformula with a Match function that uses a dynamic range in Google Sheets?

in col A 我有一个电子邮件地址列表 在 col B 中,我想捕获重复项,因此如果在 B 中获得触发器之前出现了 A 中的电子邮件地址。 我正在使用这个非常有效的公式: =if(isna(match(a3,$A:A2,0)),"New","Duplicate")

请注意,当我拖动此公式时,$A 会保持不变,因此范围会增加(例如,对于单元格 B51,范围将从 $A:A50

我的问题是,由于 A 列自动更新(例如添加了新的电子邮件地址),我希望 B 列也自动更新。我尝试使用 Arrayformula 但无法弄清楚:( 我都试过了: =arrayformula(if(isna(match(A3:A,$A:A2,0)),"New","Duplicate"))=arrayformula(if(isna(match(A3:A,$A:A2:A,0)),"New","Duplicate")) 但它们不起作用。

这是一个包含示例的电子表格以及我(失败的)尝试解决它的方法 https://docs.google.com/spreadsheets/d/1N3pFPnT452FmWa9w8EkYpIq-ZnivjoCzt5ORrNEKgLQ/edit#gid=0

您可以使用匹配来查看当前电子邮件地址的第一个匹配项是否在数组的当前行之前

=arrayformula(if(match(A2:index(A2:A,COUNTA(A2:A)),A2:index(A2:A,COUNTA(A2:A)),0)<row(A2:index(A2:A,COUNTA(A2:A)))-1,"Duplicate","New"))

请尝试:

=ArrayFormula(IFERROR(if(VLOOKUP(A2:A,{A2:A,ROW(A2:A)},2,)=ROW(A2:A), "New", "Duplicate")))

如果匹配行 = 当前行 → "New",否则 → "Duplicate"。

我用了vlookup因为它可以和ArrayFormula

一起使用

您还可以执行一个 countif 来查看当前行上方的所有内容:

=IF(countif($A:A2,A2)>1,"DUPLICATE","NEW")