Удаление всей группы в таблице по 2 условиям - VBA
Формулировка задачи:
Подскажите пожалуйста,как удалить всю группу в таблице по 2 условиям? есть таблица, надо удалить всю группу состоящую из нескольких строк если паказатель2 и показатель4 равен нулю или пустой ячейке в 8 столбце, в т.ч. нада код VBA с авто определением последней заполненной строки в таблице (таблицы разные не с одинаковым диапазоном)
в данном примере группа чел2 должна удалится полностью
группа | ПОКАЗАТЕЛЬ | 01.01.2016 | 02.01.2016 | 03.01.2016 | 04.01.2016 | 05.01.2016 | 06.01.2016 |
чел.1 | показатель1 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель2 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель3 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель4 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель5 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель6 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель7 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.1 | показатель8 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.2 | показатель1 | 0 | 0 | 0 | 0 | 0 | 0 |
чел.2 | показатель2 | 0 | 0 | 0 | 0 | 0 | 0 |
чел.2 | показатель3 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.2 | показатель4 | 0 | 0 | 0 | 0 | ||
чел.2 | показатель5 | 1 | 1 | 1 | 1 | 1 | 1 |
чел.2 | показатель6 | 0 | 0 | 0 | 0 | 0 | 0 |
чел.3 | показатель1 | 2 | 2 | 2 | 2 | 2 | 2 |
чел.3 | показатель2 | 2 | 2 | 2 | 2 | 2 | |
чел.3 | показатель3 | 2 | 2 | 2 | 2 | 2 | 2 |
чел.3 | показатель4 | 2 | 2 | 2 | 2 | 2 | 0 |
чел.3 | показатель5 | 2 | 2 | 2 | 2 | 2 | 2 |
чел.3 | показатель6 | 2 | 2 | 2 | 2 | 2 | 2 |
чел.4 | показатель1 | 2 | 2 | 2 | 2 | 2 | 2 |
чел.4 | показатель2 | 2 | 2 | 2 | 2 | 2 | 2 |
чел.4 | показатель3 | 2 | 2 | 2 | 2 | 2 | 2 |
Решение задачи: «Удаление всей группы в таблице по 2 условиям»
textual
Листинг программы
Sub Удаление_строк_показатель_2_4() Dim ii&, i&, j&, StartBlock&, EndBlock&, LastRow&, A, LastGroup LastRow = Cells(Rows.Count, 2).End(xlUp).Row A = Range([A1], Cells(LastRow, 9)).Value For ii = LastRow To 5 Step -1 StartBlock = 1 For i = ii To 5 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 j = 0 For i = StartBlock To EndBlock If A(i, 3) = "показатель2" And Val(A(i, 9)) = 0 Then j = j + 1 If A(i, 3) = "показатель4" And Val(A(i, 9)) = 0 Then j = j + 1 Next i If j = 2 Then Rows(StartBlock & ":" & EndBlock).Delete ii = StartBlock End If EndBlock = 0 Next ii End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д