Рассчитать дополнительный показатель по всей строке (по заданному условию) - 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 |
Листинг программы
- Sub qweqwe()
- Dim i&, j&, LastColumn&, LastRow&
- LastColumn = ActiveSheet.UsedRange.Columns.Count
- LastRow = Cells(Rows.Count, 1).End(xlUp).Row
- For i = LastRow To 2 Step -1
- If Cells(i, 2) = "показатель3" Or Cells(i, 2) = "показатель4" Then
- Rows(i + 1).Insert
- Cells(i + 1, 2) = "Темпа роста"
- Cells(i + 1, 1) = Cells(i, 1)
- For j = 4 To LastColumn
- With Cells(i + 1, j)
- .FormulaR1C1 = "=R[-1]C/R[-1]C[-1]"
- .NumberFormat = "0%"
- End With
- Next j
- End If
- Next i
- End Sub
Решение задачи: «Рассчитать дополнительный показатель по всей строке (по заданному условию)»
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д