Excel IF 条件,如果作为数组公式输入则计算结果为 TRUE,否则计算结果为 FALSE

Excel IF condition that will evaluate to TRUE if entered as an array formula, and FALSE if not

我正在尝试让我交给其他人的仪表板万无一失,它包含一些数组公式。如果有人编辑了一个数组公式而忘记点击 Ctrl+Shift+Enter,现在所发生的只是公式开始 returning 结果以一种微妙的方式不正确。

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

类似于:

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

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

您可以像这样在条件中使用 MATCH:

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

如果不使用 Ctrl + Shift + Enter 输入公式,则匹配只会尝试在 {2,2} 数组中查找 1,而不会查找 return 一个错误。

此错误将 return 0 触发 False 条件的 IF 条件。

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

这将 return 为真,正常公式将触发。


只是因为你打开它 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.