如果input为数组公式,则计算结果为TRUE;如果不是,则计算结果为FALSE

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

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

就像是:

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

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

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

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

如果没有使用Ctrl + Shift + Enterinput公式,那么匹配只会尝试在{2,2}数组中find1 ,它将不会find并返回错误。

这个错误将返回0到IF条件,这将触发False条件。

如果input正确,则会从错误中加上0 ,然后在第一位find2 ,并返回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。