Причина, по которой код дает неожиданные результаты, заключается в том, что вы усредняете только две ячейки: myArray(myCount, 1)
и myArray(myCount, 3)
.Возможно, вы думаете о функции Range()
, которая будет возвращать все ячейки между двумя значениями диапазона - но это не тот случай, когда вы используете массив.
Вам нужно будет включить все три значения в вашФункция усреднения рабочего листа:
WorksheetFunction.Average(myArray(myCount, 1), myArray(myCount, 2), myArray(myCount, 3))
Вот созданная мной функция, которая будет принимать массив и усреднять массив на основе любого предоставленного номера строки (который будет вашим myCount
числом):
Function averageArrayRows(arr As Variant, ByVal myRow As Long) As Double
Dim i As Long, mySum As Double
For i = LBound(arr, 2) To UBound(arr, 2)
mySum = mySum + arr(myRow, i)
Next
averageArrayRows = mySum / (UBound(arr, 2) - LBound(arr, 2) + 1)
End Function
Который вы можете использовать:
Worksheets("Sheet1").Cells(myCount + 1, 5).Value = averageArrayRows(myArray, myCount)