工作 Excel ArrayFormula 被拆分成 VBA 因为太长了

Working Excel ArrayFormula to be split into VBA because too long

我正在努力尝试让 Excel 数组公式通过 VBA 代码应用。

公式如下:

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

我正在尝试使用以下代码通过 VBA 应用它:

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

        End With
End Sub

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

我一直收到错误 "Unable to set the FormulaArray propoerty of the Range class" 并且突出显示“.FormulaArray = ArrayFormulaPart1”。

我也尝试过其他代码,但没有成功。由于我对语法几乎一无所知,因此我不确定要更改哪些内容才能使我发布的许多代码适应我的需要。

提前感谢您的帮助,并最终快速解释如何使用 VBA.

正确设置数组公式

那是因为第一个公式必须是可行的公式才能在第一位输入:

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