Среднее арифметическое в строке с отрицательным элементом - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы