Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 13:35   #1
ТРИУМФ
Пользователь
 
Регистрация: 09.04.2008
Сообщений: 49
По умолчанию Удаление ячеек всех кроме красных и желтых

Есть таблица с остатками. excel 2010. нужно удалить все ячейки корме желтых и красных в диапазоне "матрица" со сдвигом влево. найденные темы
Как удалять ячейки с помощью VBA , Удаление строк в зависимости от заливки , Удаление пустых ячеек в MS Excel
----
ну что то я совсем глупый и не могу их вместе сложить и написать. Помогите плиз
Вложения
Тип файла: rar OOS_WH_форма.rar (18.2 Кб, 9 просмотров)
ТРИУМФ вне форума Ответить с цитированием
Старый 16.04.2013, 13:54   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Без оптимизации (работает долго!)
Код:
Sub bb()
Dim i&, j&, c&
Application.ScreenUpdating = False
For i = 7 To Cells(Rows.Count, "B").End(xlUp).Row
    For j = Cells(i, Columns.Count).End(xlToLeft).Column To 6 Step -1
'        Cells(i, j).Select
        c = Cells(i, j).Interior.Color
        If c <> vbRed And c <> vbYellow Then Cells(i, j).Delete xlShiftToLeft
    Next
Next
Application.ScreenUpdating = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.04.2013, 13:59   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Вот так уже более-менее приемлемо
Код:
Sub bb()
Dim i&, j&, c&, r As Range
Application.ScreenUpdating = False
For i = 7 To Cells(Rows.Count, "B").End(xlUp).Row
    Set r = Nothing
    For j = Cells(i, Columns.Count).End(xlToLeft).Column To 6 Step -1
'        Cells(i, j).Select
        c = Cells(i, j).Interior.Color
        If c <> vbRed And c <> vbYellow Then _
            If r Is Nothing Then Set r = Cells(i, j) Else Set r = Union(r, Cells(i, j))
    Next
    If Not r Is Nothing Then r.Delete xlShiftToLeft
Next
Application.ScreenUpdating = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.04.2013, 14:56   #4
ТРИУМФ
Пользователь
 
Регистрация: 09.04.2008
Сообщений: 49
По умолчанию

Все супер спасибо.
ТРИУМФ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выполнение макроса на всех листах кроме первого moose123 Microsoft Office Excel 3 13.06.2012 23:07
Запрет запуска всех программ, кроме одной phphel Общие вопросы Delphi 20 10.04.2011 21:13
Регулярка для вырезания всех тегов кроме заданных alexplato Общие вопросы .NET 0 19.12.2010 17:25
Удаление всех ячеек и столбцов после контрольного значения. RIPASSW Microsoft Office Excel 2 10.11.2010 09:35
Сворачивание всех окон кроме моего. tbeca@mail.ru Общие вопросы Delphi 2 17.01.2010 19:17