Рассчитать дополнительный показатель по всей строке (по заданному условию) - 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
Листинг программы
  1. Sub qweqwe()
  2. Dim i&, j&, LastColumn&, LastRow&
  3. LastColumn = ActiveSheet.UsedRange.Columns.Count
  4. LastRow = Cells(Rows.Count, 1).End(xlUp).Row
  5. For i = LastRow To 2 Step -1
  6. If Cells(i, 2) = "показатель3" Or Cells(i, 2) = "показатель4" Then
  7. Rows(i + 1).Insert
  8. Cells(i + 1, 2) = "Темпа роста"
  9. Cells(i + 1, 1) = Cells(i, 1)
  10. For j = 4 To LastColumn
  11. With Cells(i + 1, j)
  12. .FormulaR1C1 = "=R[-1]C/R[-1]C[-1]"
  13. .NumberFormat = "0%"
  14. End With
  15. Next j
  16. End If
  17. Next i
  18. End Sub

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

textual
Листинг программы
  1. Sub Суммирование_Показатель_4_5_6()
  2.     Dim ii&, i&, j&, StartBlock&, EndBlock&, LastRow&, LastCol&, A, LastGroup, RowP4&, RowP5&, RowP6&, LastColumn&
  3.     LastColumn = ActiveSheet.UsedRange.Columns.Count ' добавил
  4.    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
  5.     A = Range([A1], Cells(LastRow, LastColumn)).Value
  6.     For ii = LastRow To 2 Step -1
  7.         StartBlock = 1
  8.         For i = ii To 2 Step -1
  9.             If EndBlock = 0 Then
  10.                 EndBlock = i
  11.                 LastGroup = A(i, 2)
  12.             End If
  13.             If LastGroup = A(i, 2) Then StartBlock = i
  14.         Next i
  15.         If EndBlock > 0 Then
  16.             RowP4 = 0: RowP5 = 0: RowP6 = 0
  17.             For i = StartBlock To EndBlock
  18.                 If A(i, 3) = "показатель6" Then
  19.                     RowP6 = i
  20.                     Rows(RowP6 + 1).Insert
  21.                     Exit For
  22.                 End If
  23.             Next i
  24.             For i = StartBlock To EndBlock + 1
  25.                 Select Case Cells(i, 3)
  26.                    Case "показатель4"
  27.                         RowP4 = i
  28.                    Case "показатель5"
  29.                         RowP5 = i
  30.                  End Select
  31.             Next i
  32.             'If RowP5 > 0 And RowP6 > 0 Then
  33.            If RowP4 > 0 And RowP5 > 0 And RowP6 > 0 Then
  34.                 Cells(RowP6 + 1, 3) = "деление"
  35.                 Cells(RowP6 + 1, 2) = Cells(RowP6, 2)
  36.                 Cells(RowP6 + 1, 1) = Cells(RowP6, 1)
  37.                 For j = 4 To UBound(A, 2)
  38.                     ' расчет=показатель4+показатель5+показатель6,
  39.                    Cells(RowP6 + 1, j).FormulaR1C1 = "=R" & RowP4 & "C + R" & RowP5 & "C + R" & RowP6 & "C"
  40.                     'если(показатель6>3;показатель6+показатель5;"")
  41.                    'Cells(RowP6 + 1, j).FormulaR1C1 = "=IF(R" & RowP6 & "C > 3 , R" & RowP6 & "C + R" & RowP5 & "C , """")"
  42.                Next j
  43.             End If
  44.             ii = StartBlock
  45.         End If
  46.         EndBlock = 0
  47.     Next ii
  48. End Sub

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


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

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

8   голосов , оценка 3.375 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы