首页 文章

将if&vlookup组合公式转换为arrayformula - Google表格

提问于
浏览
0

我在Google表格中使用此公式:

=if(B3="",0,IF(ISERROR(VLOOKUP(E3,E4:E,1,FALSE)),1,0))

逻辑非常简单:如果B3不是NULL并且在E4:E范围内没有E3的重复,则写入1否则写入0

我试图将它转换为ARRAYFORMULA,因为它应该应用于E中的所有列,当行数增加时(通过表单提交),通过这样做:

=ARRAYFORMULA(if(B3="",0,IF(ISERROR(VLOOKUP(E3:E,E4:E,1,FALSE)),1,0)))

但是,它向E的所有列写了0 .

这里的原因是,VLOOKUP应该在不包括当前行的E列范围内查找 . 我不知道如何实现这一目标 .

这是Google Spreadsheet (please refer to Sheet2)

有人可以纠正我的ARRAYFORMULA吗?谢谢 .

1 回答

  • 1

    您无法偏移 ArrayFormula 中使用的范围,因此您的原始公式无法转换为 ArrayFormula 并保留结果 . 但您可以使用此解决方法:

    =ArrayFormula(IFERROR(--(VLOOKUP(OFFSET(E3,,,COUNTA(A3:A)),QUERY({ROW(INDIRECT("A1:A"&COUNTA(A3:A))), OFFSET(E3,,,COUNTA(A3:A))},"select Col2, max(Col1) where Col2 <> '' group by Col2 label Col2 '', max(Col1) ''"),2,0)=ROW(INDIRECT("A1:A"&COUNTA(A3:A)))),0))

    我在此公式中使用 row 函数将其与出现特定值时的最大行进行比较 .

    Your sample file

相关问题