使用Excel ArrayFormula被分割成VBA太长

我努力让Excel数组公式适用于VBA代码。

公式如下:

=IF(B2=VLOOKUP(B2,Admin!$G$5:$G$501,1,FALSE),IFERROR(INDEX(Admin!$G$5:$K$501,MATCH(1,(Admin!$I$5:$I$501=A2)*(Admin!$G$5:$G$501=B2),0),5),INDEX(Admin!$G$5:$K$501,MATCH(1,(Admin!$I$5:$I$501="ALL")*(Admin!$G$5:$G$501=B2),0),5)),"") 

我试图通过VBA使用下面的代码来应用它:

 Sub LongArrayformula() Dim ArrayFormulaPart1, ArrayFormulaPart2 As String ArrayFormulaPart1 = "=IF(B2=VLOOKUP(B2,Admin!$G$5:$G$501,1,FALSE),IFERROR(INDEX(Admin!$G$5:$K$501,XXXX" ArrayFormulaPart2 = "MATCH(1,(Admin!$I$5:$I$501=A2)*(Admin!$G$5:$G$501=B2),0),5),INDEX(Admin!$G$5:$K$501,MATCH(1,(Admin!$I$5:$I$501=""ALL"")*(Admin!$G$5:$G$501=B2),0),5)),"""")" With ActiveSheet.Range("bv2") .FormulaArray = ArrayFormulaPart1 .Replace "XXXX", ArrayFormulaPart2, lookat:=xlPart End With End Sub 

我知道在网上有很多网站涉及这个问题,但我不能让这个公式自动应用。

我不断收到错误“无法设置Range类的FormulaArray属性”,并且“.FormulaArray = ArrayFormulaPart1”被突出显示。

我也尝试了其他的代码,没有运气。 由于语法对我来说是未知的,我不知道要改变什么以适应我播种的许多代码。

预先感谢您的帮助,并最终快速解释如何使用VBA正确设置数组公式。

这是因为第一个公式必须是一个可行的公式:

 Sub LongArrayformula() Dim ArrayFormulaPart1, ArrayFormulaPart2 As String ArrayFormulaPart1 = "=IF(B2=VLOOKUP(B2,Admin!$G$5:$G$501,1,FALSE),IFERROR(INDEX(Admin!$G$5:$K$501,9999,5),INDEX(Admin!$G$5:$K$501,MATCH(1,(Admin!$I$5:$I$501=""ALL"")*(Admin!$G$5:$G$501=B2),0),5)),"""")" ArrayFormulaPart2 = "MATCH(1,(Admin!$I$5:$I$501=A2)*(Admin!$G$5:$G$501=B2),0)" With ActiveSheet.Range("bv2") .FormulaArray = ArrayFormulaPart1 .Replace "9999", ArrayFormulaPart2, lookat:=xlPart End With End Sub