Excel IF条件,如果作为数组公式输入将评估为TRUE,如果不是

时间:2017-06-01 15:40:20

标签: excel array-formulas

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

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

类似的东西:

=IF(IsArrayFormula, NormalFormula, "Ctrl+Shift+Enter Required")

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

1 个答案:

答案 0 :(得分:5)

您可以在以下标准中使用MATCH:

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

如果未使用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

当确保只检查应该包含数组公式的单元格时,这会变得复杂。我只检查G25。