【问题标题】:Convert an if & vlookup combination formula to arrayformula - Google Sheets将 if 和 vlookup 组合公式转换为 arrayformula - Google 表格
【发布时间】:2017-08-24 06:20:36
【问题描述】:

我在 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 吗?谢谢。

【问题讨论】:

    标签: excel google-sheets


    【解决方案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

    【讨论】:

    • 哇!这按预期工作。但是,我不明白使用的逻辑.. 非常感谢 Max,你让我很开心:D
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多