我在Google表格中使用此公式:
=if(B3="",0,IF(ISERROR(VLOOKUP(E3,E4:E,1,FALSE)),1,0))
逻辑非常简单: 如果B3不为NULL且E4范围内没有E3的重复:E,则写入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吗?谢谢。
答案 0 :(得分: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
函数将其与特定值出现时的最大行进行比较。