嗨,我正尝试以这种方式插入公式数组
Dim F1 As String
Dim f2 As String
F1 = "=SUM(--(FREQUENCY(IF(rptEURegThresholds!C[7]=""Yes"",IF(rptEURegThresholds!C[16]=""No"",IF(rptEURegThresholds!C[15]=""Total Disclosure"",1,1"
f2 = "MATCH(rptEURegThresholds!C[-1],rptEURegThresholds!C[-1],0)))),ROW(rptEURegThresholds!C[-1])-ROW(rptEURegThresholds!R[-6]C[-1])+1)>0))"
With sh8.Range("F7")
.FormulaArray = F1
.Replace "1,1", f2, xlPart
End With
但是出了点问题,找不到问题。请帮忙!!!
答案 0 :(得分:0)
我可以想到公式中有2个问题
您的公式(包括F1和F2)中的字符总数约为272,超过了Excel中FormulaArray的255个字符的限制。请参阅 Overcoming the 255 char. limit for formulaArray in Excel VBA 。
代码肯定会在第
行处停止.FormulaArray = F1
,出现错误“无法设置范围类的FormualArray属性” 由于此阶段的公式不完整(括号等不匹配)。
因此,我尝试将工作表名称从“ rptEURegThresholds”缩短为“ rptEURT”,并将F1和F2字符串都组合为F1。它的工作没有任何错误。但是,只能由您检查公式是否正确工作。
Dim F1 As String
F1 = "=SUM(--(FREQUENCY(IF(rptEURT!C[7]=""Yes"",IF(rptEURT!C[16]=""No"",IF(rptEURT!C[15]=""Total Disclosure""," & _
"MATCH(rptEURT!C[-1],rptEURT!C[-1],0)))),ROW(rptEURT!C[-1])-ROW(rptEURT!R[-6]C[-1])+1)>0))"
With Sheets(3).Range("F7")
.FormulaArray = F1
' .Replace "1,1", f2, xlPart
End With