如果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。