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解决方案我不会投票.
你可以在这样的标准中使用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.