如何在VBA中实现COVAR公式?
How to implement the COVAR formula in VBA?
我一直在计算两只股票的方差,它需要协方差才能完成计算。但是我想用VBA来实现公式。
RangeG4:G25有微软的returns和RangeH4:H25的数据有 returns Apple Inc. 的数据和 Range I4:I25 有 returns Facebook 的数据和 Range J4:J25 有 returns Exxon 的数据。
我已将范围 G4:G25 命名为 Range1 并将范围 H4:H25 命名为 Range2 和 I4:I25 作为 Range3 和 J4:J25 作为 Range4
下面是我的代码
Dim data1 As Integer
Dim data2 As Integer
If ComboBox1 = "microsoft" Then data1 = Range("Range1").Select
If ComboBox1 = "facebook" Then data1 = Range("Range3").Select
If ComboBox2 = "apple" Then data2 = Range("Range2").Select
If ComboBox2 = "exxon" Then data2 = Range("Range4").Select
Range("G32").Formula = "=COVAR(Range(data1),Range(data2))"
我没有得到这个协方差公式的任何结果。我收到“#NAME?”单元格 G32 中的错误。这里的任何帮助将不胜感激。提前致谢
请这样尝试:
Sub testCovarFunction()
Dim data1 As Range, data2 As Range
If ComboBox1 = "microsoft" Then
Set data1 = Range("Range1")
ElseIf ComboBox1 = "facebook" Then
Set data1 = Range("Range3")
End If
If ComboBox2 = "apple" Then
Set data2 = Range("Range2")
ElseIf ComboBox2 = "exxon" Then
Set data2 = Range("Range4")
End If
Range("G32").Formula = "=COVAR(" & data1.Address & "," & data2.Address & ")"
End Sub
如果您需要 VBA 中的所有内容,请尝试此代码:
Sub testCovarFunctionBis()
Dim data1 As Variant, data2 As Variant
If ComboBox1 = "microsoft" Then
data1 = Range("Range1").value
ElseIf ComboBox1 = "facebook" Then
data1 = Range("Range3").value
End If
If ComboBox2 = "apple" Then
data2 = Range("Range2").value
ElseIf ComboBox2 = "exxon" Then
data2 = Range("Range4").value
End If
Range("G32").value = WorksheetFunction.Covar(data1, data2)
End Sub
试试这个:
Sub SubCovarFormula()
Dim data1 As Integer
Dim data2 As Integer
If ComboBox1 = "microsoft" Then data1 = Excel.WorksheetFunction.Sum(Range("Range1"))
If ComboBox1 = "facebook" Then data1 = Excel.WorksheetFunction.Sum(Range("Range3"))
If ComboBox2 = "apple" Then data2 = Excel.WorksheetFunction.Sum(Range("Range2"))
If ComboBox2 = "exxon" Then data2 = Excel.WorksheetFunction.Sum(Range("Range4"))
Range("G2").Formula = "=COVAR(" & data1 & "," & data2 & ")"
End Sub
告诉我它是否有效,欢迎随时提出任何说明。
您可以随时打开您的宏录制器并单击包含您需要转换为 VBA 的任何函数的单元格,您将拥有您需要的所有代码。您几乎肯定会拥有比您需要的更多的代码,但这是另一回事了。
我一直在计算两只股票的方差,它需要协方差才能完成计算。但是我想用VBA来实现公式。
RangeG4:G25有微软的returns和RangeH4:H25的数据有 returns Apple Inc. 的数据和 Range I4:I25 有 returns Facebook 的数据和 Range J4:J25 有 returns Exxon 的数据。
我已将范围 G4:G25 命名为 Range1 并将范围 H4:H25 命名为 Range2 和 I4:I25 作为 Range3 和 J4:J25 作为 Range4
下面是我的代码
Dim data1 As Integer
Dim data2 As Integer
If ComboBox1 = "microsoft" Then data1 = Range("Range1").Select
If ComboBox1 = "facebook" Then data1 = Range("Range3").Select
If ComboBox2 = "apple" Then data2 = Range("Range2").Select
If ComboBox2 = "exxon" Then data2 = Range("Range4").Select
Range("G32").Formula = "=COVAR(Range(data1),Range(data2))"
我没有得到这个协方差公式的任何结果。我收到“#NAME?”单元格 G32 中的错误。这里的任何帮助将不胜感激。提前致谢
请这样尝试:
Sub testCovarFunction()
Dim data1 As Range, data2 As Range
If ComboBox1 = "microsoft" Then
Set data1 = Range("Range1")
ElseIf ComboBox1 = "facebook" Then
Set data1 = Range("Range3")
End If
If ComboBox2 = "apple" Then
Set data2 = Range("Range2")
ElseIf ComboBox2 = "exxon" Then
Set data2 = Range("Range4")
End If
Range("G32").Formula = "=COVAR(" & data1.Address & "," & data2.Address & ")"
End Sub
如果您需要 VBA 中的所有内容,请尝试此代码:
Sub testCovarFunctionBis()
Dim data1 As Variant, data2 As Variant
If ComboBox1 = "microsoft" Then
data1 = Range("Range1").value
ElseIf ComboBox1 = "facebook" Then
data1 = Range("Range3").value
End If
If ComboBox2 = "apple" Then
data2 = Range("Range2").value
ElseIf ComboBox2 = "exxon" Then
data2 = Range("Range4").value
End If
Range("G32").value = WorksheetFunction.Covar(data1, data2)
End Sub
试试这个:
Sub SubCovarFormula()
Dim data1 As Integer
Dim data2 As Integer
If ComboBox1 = "microsoft" Then data1 = Excel.WorksheetFunction.Sum(Range("Range1"))
If ComboBox1 = "facebook" Then data1 = Excel.WorksheetFunction.Sum(Range("Range3"))
If ComboBox2 = "apple" Then data2 = Excel.WorksheetFunction.Sum(Range("Range2"))
If ComboBox2 = "exxon" Then data2 = Excel.WorksheetFunction.Sum(Range("Range4"))
Range("G2").Formula = "=COVAR(" & data1 & "," & data2 & ")"
End Sub
告诉我它是否有效,欢迎随时提出任何说明。
您可以随时打开您的宏录制器并单击包含您需要转换为 VBA 的任何函数的单元格,您将拥有您需要的所有代码。您几乎肯定会拥有比您需要的更多的代码,但这是另一回事了。