无法设置范围 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
我试图从最接近 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