Как реализовать формулу COVAR в VBA? - PullRequest
0 голосов
/ 18 апреля 2020

Я вычислял дисперсию двух акций, и требуется ковариация, чтобы завершить sh вычисление. Но я хочу использовать VBA для реализации формулы.

Диапазон G4: G25 имеет данные о возвратах Microsoft, а Диапазон H4: H25 имеет данные Возврат Apple В c. и Диапазон I4: I25 имеет данные возвратов Facebook, а Диапазон J4: J25 имеет данные возвратов 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. Любая помощь здесь будет принята с благодарностью. Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 19 апреля 2020

Попробуйте, пожалуйста:

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
0 голосов
/ 19 апреля 2020

Вы всегда можете включить ваш Macro Recorder и щелкнуть ячейку с любой функцией, которую вам нужно конвертировать в VBA, и у вас будет весь необходимый код. У вас почти наверняка будет больше кода, чем вам нужно, но это история для другого дня.

0 голосов
/ 19 апреля 2020

Попробуйте:

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

Скажите, работает ли он, и не стесняйтесь спрашивать какие-либо разъяснения.

...