Я пытаюсь создать функцию Excel VBA, которая циклически перебирает cycle_range
и вычисляет корреляцию каждого диапазона из 5 записей в этом диапазоне до base_range
из 5 записей в ячейках.Функция должна возвращать максимальную корреляцию в cycle_range.Например, следующие данные должны возвращать выход 0.506 ....., поскольку второй набор номеров диапазона циклов, 7, 8, 9, 0, 8
, имеет эту корреляцию с базовым диапазоном, который является самой высокой корреляцией:
cycle range base range output
4 3 0.506253796
7 7
8 3
9 2
0 9
8
5
4
Код, который у меня есть, приведен ниже, он не работает.Ясно, что есть проблема с добавлением rng и элементов вместе из cycle_range, но я не уверен, что делать:
Function best_correl(correl_length As Double, base_range As Range, cycle_range As Range)
Dim i As Double
Dim rng As Range
Dim cycle_range_length As Double
Dim element As Variant
Dim max_correl As Double
Dim curr_correl As Double
cycle_range_length = cycle_range.Count - correl_length
For i = 1 To cycle_range_length
For element = 1 To correl_length
rng = rng + element
Next element
curr_correl = WorksheetFunction.Correl(base_range, rng)
If curr_correl > max_correl Then
max_correl = curr_correl
End If
Next i
best_correl = max_correl
End Function
Как всегда, любой совет очень ценится, мне трудноодин.Спасибо!
PS Я тут кое-что набрал - vba передать группу ячеек в качестве диапазона для работы