使用下面的代码,我正在计算RSS。但是,确实会发生Y范围实际上不包含值的情况。我已经超越了错误(运行时错误'1004'),当没有任何带有'on error goto next‘的值时,它就会’复制‘与目标单元格中的前一个值相同的值,而实际上没有任何值。
有没有办法在目标单元格中显示"NA“而不是先前的值,因为缺少Y值而无法计算RSS?
提前谢谢你
Private Sub Regr(strWksData As String, WsTools As Worksheet, strWksFF3 As String, strWksResult As String)
Dim NoOfRow As Long
Dim i As Integer
Dim sData As Worksheet
Dim sFF3 As Worksheet
Dim sResult As Worksheet
Dim rX1 As Range
Dim rY1 As Range
'General
Set sData = Sheets("Return")
Set sFF3 = Sheets("FF-3")
Set sResult = Sheets("Result")
'Set X ranges
Set rX1 = sFF3.Range("C2:E21")
'Set Y ranges
Set rY1 = sData.Range("F2:F21")
'Loop through columns
'Provide statistic
On Error GoTo ErrorHandling
For i = 0 To 5
vStat1 = Application.WorksheetFunction.LinEst(rY1.Offset(0, i), rX1, True, True)
sResult.Range("F2").Offset(0, i).Value = vStat1(5, 2)
NoOfRow = rY1.Rows.Count
WsTools.Range("B2").Value = NoOfRow
Next i
ErrorHandling:
Resume Next
On Error GoTo 0
MsgBox ("RSS Done")
End Sub发布于 2017-03-22 03:26:33
由于您直接将结果写入工作表,因此只需利用Application.LinEst v.Application.WorksheetFunction.LinEst的不同错误报告行为。
调用完全限定的WorksheetFunction时,在调用的函数中引发的任何错误都将作为运行时错误抛出:
Debug.Print Application.WorksheetFunction.Sum("a", "b") '<--runtime error 1004
在Application上使用可扩展接口时,在被调用函数中引发的任何错误都会返回包装在Variant中的错误
Debug.Print Application.Sum("a", "b") '<--Prints Error 2015 (#VALUE!)
如果您需要测试以确定它是否是错误,可以使用IsError函数:
Dim v As Variant
v = Application.Sum("a", "b")
Debug.Print IsError(v) '<-- True在您的示例中,您可以直接将错误值写入单元格:
For i = 0 To 5
Dim result As Variant
result = Application.LinEst(rY1.Offset(0, i), rX1, True, True)
'Don't attempt to use the indexer on an error.
If IsError(result) Then
sResult.Range("F2").Offset(0, i).Value = result
Else
sResult.Range("F2").Offset(0, i).Value = result(5, 2)
End If
Nexthttps://stackoverflow.com/questions/42935309
复制相似问题