Среднее арифметическое в строке с отрицательным элементом - VBA
Формулировка задачи:
Всем привет
Вроде почти все допилил, а на выходе какая-то ересь, подскажите, что не так
Условие задачи: дана матрица Z(5,4).
Если в строке есть отрицательный элемент, найти среднее арифметическое ненулевых элементов этой строки и вывести эти значения в отдельный массив.
Что есть: исходная матрица и массив с переопределением размерности в ходе программы.
Я так понял, выполняя код, программа в каждый элемент массива записывает среднее арифметическое элементов всей матрицы.
Решение задачи: «Среднее арифметическое в строке с отрицательным элементом»
textual
Листинг программы
Sub test()
Dim Z As Variant
Dim isExist As Boolean
Dim result() As Variant
Dim cnt As Integer
Dim srZ As Variant
Dim n As Integer
ReDim Z(1 To 5, 1 To 4)
For i = 1 To 5
For j = 1 To 4
Randomize
Z(i, j) = Int(20 * Rnd - 10)
Next j
Next i
Range(Range("A1"), Range("A1").Offset(UBound(Z) - 1, UBound(Z, 2) - 1)) = Z
For i = 1 To 5
isExist = False
cnt = 0
srZ = 0
For j = 1 To 4
If Z(i, j) <> 0 Then
srZ = srZ + Z(i, j)
cnt = cnt + 1
End If
If Z(i, j) < 0 Then
isExist = True
End If
Next j
If isExist Then
n = n + 1
ReDim Preserve result(1 To n)
result(n) = srZ / cnt
End If
Next i
Range(Range("F1"), Range("F1").Offset(UBound(result) - 1, 0)) = WorksheetFunction.Transpose(result)
End Sub