Рассчитать дополнительный показатель по всей строке (по заданному условию) - VBA
Формулировка задачи:
Подскажите пожалуйста, как рассчитать дополнительный показатель по всей строке по условию:
- добавляется новый показатель "РАСЧЕТ" после "показатель6"
- расчет осуществляется сложением "показателя6" и "показателя5" и только в рамках своей группыФИО
есть такой код но с помощью него нельзя рассчитать данный расчет, потому-что нет точного расположения у показателя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 |
Решение задачи: «Рассчитать дополнительный показатель по всей строке (по заданному условию)»
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д