Удаление всей группы в таблице по 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
Листинг программы
  1. Sub Удаление_строк_показатель_2_4()
  2.     Dim ii&, i&, j&, StartBlock&, EndBlock&, LastRow&, A, LastGroup
  3.     LastRow = Cells(Rows.Count, 2).End(xlUp).Row
  4.     A = Range([A1], Cells(LastRow, 9)).Value
  5.     For ii = LastRow To 5 Step -1
  6.         StartBlock = 1
  7.         For i = ii To 5 Step -1
  8.             If EndBlock = 0 Then
  9.                 EndBlock = i
  10.                 LastGroup = A(i, 2)
  11.             End If
  12.             If LastGroup = A(i, 2) Then StartBlock = i
  13.         Next i
  14.         If EndBlock > 0 Then
  15.             j = 0
  16.             For i = StartBlock To EndBlock
  17.                 If A(i, 3) = "показатель2" And Val(A(i, 9)) = 0 Then j = j + 1
  18.                 If A(i, 3) = "показатель4" And Val(A(i, 9)) = 0 Then j = j + 1
  19.             Next i
  20.             If j = 2 Then Rows(StartBlock & ":" & EndBlock).Delete
  21.             ii = StartBlock
  22.         End If
  23.         EndBlock = 0
  24.     Next ii
  25. End Sub

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


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

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

7   голосов , оценка 3.857 из 5

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

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

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