Удаление всей группы в таблице по 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

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


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

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

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