错误无法获取工作表函数RSq一个拦截,但LINEST没有问题? 为什么? 以及如何解决?

Sub S_Reg_Matrixes() Application.ScreenUpdating = False Dim i, j As Long Dim Pente() As Double Dim vlive As Range Dim rmat As Range Dim dmat As Range Dim betamat As Range Dim alphamat As Range Dim gammamat As Range Dim lout As Range Dim VV As Range Dim Rb As Workbook Set Rb = Workbooks("Tools.xlsm") Dim RMW As Workbook Set RMW = Workbooks("REG_MATRIXES.xlsm") ' Defining Ranges: Rb.Activate Set vlive = Rb.Worksheets("STATISTICS").Range("StatLiveVol") RMW.Activate Set rmat = Worksheets("SLOPE").Range("SRMatrix") Set dmat = Worksheets("SLOPE").Range("SDistMatrix") Set betamat = Worksheets("SLOPE").Range("AE6:AO19") Set alphamat = Worksheets("SLOPE").Range("AP6:AZ19") Set gammamat = RMW.Worksheets("SLOPE").Range("BA6:BK19") Set lout = Worksheets("SLOPE").Range("BL6:BV19") Set VV = Worksheets("SLOPE").Range("SVarVol") 'Calculate and Fill R^2 Matrix as well as get dist variables Dim out1() As Double For i = 1 To 14 For j = 1 To 11 out1 = OutStat(bucket(vlive(i, j)), Range("SRegScale")) 'MsgBox (out1(UBound(out1) - LBound(out1)) + 1) Pente = slope(bucket(vlive(i, j)), Range("SRegScale")) VV(i, j) = Application.WorksheetFunction.Var_P(out1) Call NewScatter_Eliot(Pente, out1) rmat(i, j) = WorksheetFunction.RSq(out1, Pente) ' Is throwing Error betamat(i, j) = WorksheetFunction.LinEst(out1, Pente) alphamat(i, j) = WorksheetFunction.Intercept(out1, Pente) ' Is throwing Error gammamat(i, j) = Pente(UBound(Pente) - LBound(Pente) + 1) lout(i, j) = out1(UBound(out1) - LBound(out1) + 1) Next j Next i End Sub 

我正在研究一个VBAmacros,我倒退很多次。 我不知道为什么我会在Lin Est完全没问题时得到这个错误? 我需要解决这个错误。 Pente也是一个数组,out1也都是一样的长度。

RSq可能会遇到一些计算错误,例如除以零。

要检查并让代码继续运行,请尝试使用Application来代替:

 rmat(i, j) = Application.RSq(out1, Pente)` ' ^^^^^^^^^^^ 

之后,请在工作表中validation是否有错误结果,即#DIV/0!

我解决了它。 问题是我的函数斜率倒数第一行0,所以这第一行0是给出的错误。