将if&vlookup组合公式转换为arrayformula – Google表格
我有这个公式在Google表格中工作:
=if(B3="",0,IF(ISERROR(VLOOKUP(E3,E4:E,1,FALSE)),1,0))
逻辑非常简单:如果B3不为空,且在E4:E范围内没有E3的重复,则写1,否则写0
我试图将其转换为ARRAYFORMULA,因为它应该被应用到E中的所有列,当行数增加(通过表单提交),通过这样做:
=ARRAYFORMULA(if(B3="",0,IF(ISERROR(VLOOKUP(E3:E,E4:E,1,FALSE)),1,0)))
但是,它将0写入到E的所有列中。
这里的原因是,VLOOKUP应该在除当前行之外的E列范围内查找。 我不知道如何实现这一点。
这里是Google Spreadsheet(请参考Sheet2)
有人可以纠正我的ARRAYFORMULA吗? 谢谢。
你不能抵消ArrayFormula
使用的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
函数,当出现某个值时,将它与最大行进行比较。
你的示例文件