Рассчитать дополнительный показатель по всей строке (по заданному условию) - VBA

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как рассчитать дополнительный показатель по всей строке по условию: - добавляется новый показатель "РАСЧЕТ" после "показатель6" - расчет осуществляется сложением "показателя6" и "показателя5" и только в рамках своей группыФИО
основная группа гуппаФИО наименование шапка1 шапка2 шапка3 шапка4 шапка5
п чел1 показатель1 1 2 3 2 1
п чел1 показатель2 3 3 3 3 3
п чел1 показатель5 3 3 3 3 4
п чел1 показатель0 3 3 3 3 3
п чел1 показатель6 5 4 3 5 6
п чел1 показатель7 2 1 1 1 1
п чел2 показатель1 3 3 3 3 3
п чел2 показатель2 3 3 3 3 3
п чел2 показатель6 3 3 3 3 3
п чел2 показатель3 2 3 1 2 3
п чел2 показатель7 4 3 1 2 3
п чел2 показатель5 5 3 1 2 3
п чел2 показатель8 3 3 3 3 3
есть такой код но с помощью него нельзя рассчитать данный расчет, потому-что нет точного расположения у показателя5

Решение задачи: «Рассчитать дополнительный показатель по всей строке (по заданному условию)»

textual
Листинг программы
Sub Суммирование_Показатель_4_5_6()
    Dim ii&, i&, j&, StartBlock&, EndBlock&, LastRow&, LastCol&, A, LastGroup, RowP4&, RowP5&, RowP6&, LastColumn&
    LastColumn = ActiveSheet.UsedRange.Columns.Count ' добавил
    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    A = Range([A1], Cells(LastRow, LastColumn)).Value
    For ii = LastRow To 2 Step -1
        StartBlock = 1
        For i = ii To 2 Step -1
            If EndBlock = 0 Then
                EndBlock = i
                LastGroup = A(i, 2)
            End If
            If LastGroup = A(i, 2) Then StartBlock = i
        Next i
        If EndBlock > 0 Then
            RowP4 = 0: RowP5 = 0: RowP6 = 0
            For i = StartBlock To EndBlock
                If A(i, 3) = "показатель6" Then
                    RowP6 = i
                    Rows(RowP6 + 1).Insert
                    Exit For
                End If
            Next i
            For i = StartBlock To EndBlock + 1
                Select Case Cells(i, 3)
                   Case "показатель4"
                        RowP4 = i
                   Case "показатель5"
                        RowP5 = i
                 End Select
            Next i
            'If RowP5 > 0 And RowP6 > 0 Then
            If RowP4 > 0 And RowP5 > 0 And RowP6 > 0 Then
                Cells(RowP6 + 1, 3) = "деление"
                Cells(RowP6 + 1, 2) = Cells(RowP6, 2)
                Cells(RowP6 + 1, 1) = Cells(RowP6, 1)
                For j = 4 To UBound(A, 2)
                    ' расчет=показатель4+показатель5+показатель6,
                    Cells(RowP6 + 1, j).FormulaR1C1 = "=R" & RowP4 & "C + R" & RowP5 & "C + R" & RowP6 & "C"
                    'если(показатель6>3;показатель6+показатель5;"")
                    'Cells(RowP6 + 1, j).FormulaR1C1 = "=IF(R" & RowP6 & "C > 3 , R" & RowP6 & "C + R" & RowP5 & "C , """")"
                Next j
            End If
            ii = StartBlock
        End If
        EndBlock = 0
    Next ii
End Sub

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


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

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

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