无法设置范围 class 1004 的公式数组 属性

Unable to set the formulaarray property of the range class 1004

我试图从最接近 G2 单元格中的值的 1 列中获取值的总和,所以我发现这个公式适用于 excel (ctrl + Shift + Enter) 但是当我正在尝试使用 vba 来解决这个问题,它会抛出错误 1004。请在下面找到我正在使用的公式。 “G2”是实际值所在的位置,C3:C10 是对每个单元格求和并找到最接近值的范围。

wbapp.Sheets(1).Range("V2:AC2").FormulaArray = "=INDEX(MOD(INT((ROW($C:INDEX($C:$C, 2^ROWS($C:$C)))-1)/2^(TRANSPOSE(MATCH(ROW($C:$C), ROW($C:$C)))-1)), 2)*TRANSPOSE($C:$C), MATCH(MIN(ABS(MMULT(MOD(INT((ROW($C:INDEX($C:$C, 2^ROWS($C:$C)))-1)/2^(TRANSPOSE(MATCH(ROW($C:$C), ROW($C:$C)))-1)), 2), $C:$C)-$G)), ABS(MMULT(MOD(INT((ROW($C:INDEX($C:$C, 2^ROWS($C:$C)))-1)/2^(TRANSPOSE(MATCH(ROW($C:$C), ROW($C:$C)))-1)), 2), $C:$C)-$G), 0), 0)"

由于字符数限制,您可以将公式(或其中的一部分)放在定义的名称中

Sub ThroughNames()
Dim MyLongFormula As String
'Set wbapp = ThisWorkbook
 MyLongFormula = "=INDEX(MOD(INT((ROW($C:INDEX($C:$C, 2^ROWS($C:$C)))-1)/2^(TRANSPOSE(MATCH(ROW($C:$C), ROW($C:$C)))-1)), 2)*TRANSPOSE($C:$C), MATCH(MIN(ABS(MMULT(MOD(INT((ROW($C:INDEX($C:$C, 2^ROWS($C:$C)))-1)/2^(TRANSPOSE(MATCH(ROW($C:$C), ROW($C:$C)))-1)), 2), $C:$C)-$G)), ABS(MMULT(MOD(INT((ROW($C:INDEX($C:$C, 2^ROWS($C:$C)))-1)/2^(TRANSPOSE(MATCH(ROW($C:$C), ROW($C:$C)))-1)), 2), $C:$C)-$G), 0), 0)"

    wbapp.Names.Add Name:="test", RefersTo:=MyLongFormula
   wbapp.Sheets(1).Range("V2:AC2").FormulaArray = "=test"
End Sub