Excel IF条件,如果作为数组公式输入将评估为TRUE,否则为FALSE

Ala*_*ain 2 excel array-formulas

我试图愚弄我正在交给其他人的仪表板,它包含一些数组公式.如果有人编辑其中一个数组公式并忘记命中Ctrl+Shift+Enter,那么现在所发生的一切都是公式开始以微妙的方式返回错误的结果.

我想要的是某种IF检查,我可以添加到公式,如果他们忘记输入它作为数组公式,将允许我返回一个明确的错误.

就像是:

=IF(IsArrayFormula, NormalFormula, "Ctrl+Shift+Enter Required")
Run Code Online (Sandbox Code Playgroud)

VBA对我来说不是一个选择,但如果你想为没有这个限制的人留下VBA解决方案我不会投票.

Sco*_*ner 5

你可以在这样的标准中使用MATCH:

=IF(SUM(IFERROR(MATCH({1,2},{2},0),0)),NormalFormula,"Ctrl+Shift+Enter Required")
Run Code Online (Sandbox Code Playgroud)

如果未使用Ctrl + Shift + Enter输入公式,则匹配将仅尝试1{2,2}数组中查找,它将找不到并返回错误.

然后该错误将返回0到IF条件,这将触发False条件.

如果输入正确,它将0从错误中添加,然后2在第一个位置找到并返回1条件的总和.

这将返回True,正常公式将触发.


只是因为你把它打开了vba.

如果用户忘记,这将自动将公式转换为数组公式:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G25")) Is Nothing Then
        If Not Target.HasArray Then
            Target.FormulaArray = Target.Formula
        End If
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

当然,在确保只检查应该具有数组公式的单元格时,这会变得复杂.我只检查G25.

  • 条件也可以简化为"SUM(0 + CHOOSE({1,2},0,1))"? (2认同)