Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление строк при отсутствии закрашенных ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Удаление строк при отсутствии закрашенных ячеек
iGenex Дата: Понедельник, 19.10.2015, 11:50 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте, уважаемые форумчане.
Помогите сделать макрос, который бы удалял строки по условию, что если в строке нет ни одной закрашенной ячейки.
И удалял столбцы в которых нет ни одной закрашенной ячейки.
Заранее спасибо.
К сообщению приложен файл: Monitoring_repo.xlsx (24.9 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане.
Помогите сделать макрос, который бы удалял строки по условию, что если в строке нет ни одной закрашенной ячейки.
И удалял столбцы в которых нет ни одной закрашенной ячейки.
Заранее спасибо.

Автор - iGenex
Дата добавления - 19.10.2015 в 11:50
Gustav Дата: Понедельник, 19.10.2015, 12:32 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2760
Репутация: 1140 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
[vba]
Код
Sub io()
    Dim r As Range, c As Range, i As Long
    For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        Set r = ActiveSheet.UsedRange.Rows(i)
        If Not IsNull(r.Interior.ColorIndex) Then r.EntireRow.Delete
    Next i
    For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
        Set c = ActiveSheet.UsedRange.Columns(i)
        If Not IsNull(c.Interior.ColorIndex) Then c.EntireColumn.Delete
    Next i
End Sub
[/vba]
P.S. Даже правильнее с более простыми условиями:
[vba]
Код
Sub io()
    Dim r As Range, c As Range, i As Long
    For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        Set r = ActiveSheet.UsedRange.Rows(i)
        If r.Interior.ColorIndex = xlColorIndexNone Then r.EntireRow.Delete  'где xlColorIndexNone = -4142
    Next i
    For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
        Set c = ActiveSheet.UsedRange.Columns(i)
        If c.Interior.ColorIndex = xlColorIndexNone Then c.EntireColumn.Delete
    Next i
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 19.10.2015, 13:05
 
Ответить
Сообщение[vba]
Код
Sub io()
    Dim r As Range, c As Range, i As Long
    For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        Set r = ActiveSheet.UsedRange.Rows(i)
        If Not IsNull(r.Interior.ColorIndex) Then r.EntireRow.Delete
    Next i
    For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
        Set c = ActiveSheet.UsedRange.Columns(i)
        If Not IsNull(c.Interior.ColorIndex) Then c.EntireColumn.Delete
    Next i
End Sub
[/vba]
P.S. Даже правильнее с более простыми условиями:
[vba]
Код
Sub io()
    Dim r As Range, c As Range, i As Long
    For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        Set r = ActiveSheet.UsedRange.Rows(i)
        If r.Interior.ColorIndex = xlColorIndexNone Then r.EntireRow.Delete  'где xlColorIndexNone = -4142
    Next i
    For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
        Set c = ActiveSheet.UsedRange.Columns(i)
        If c.Interior.ColorIndex = xlColorIndexNone Then c.EntireColumn.Delete
    Next i
End Sub
[/vba]

Автор - Gustav
Дата добавления - 19.10.2015 в 12:32
SLAVICK Дата: Понедельник, 19.10.2015, 12:40 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вот мой вариант:

Упс не так понял - мой вариант, наоборот, удаляет все закрашенные ячейки :o
К сообщению приложен файл: Monitoring_repo.xlsm (31.1 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Понедельник, 19.10.2015, 12:48
 
Ответить
СообщениеВот мой вариант:

Упс не так понял - мой вариант, наоборот, удаляет все закрашенные ячейки :o

Автор - SLAVICK
Дата добавления - 19.10.2015 в 12:40
iGenex Дата: Понедельник, 19.10.2015, 15:31 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Всем большое спасибо за ответы.

Подскажите, а можно удалять столбцы не затрагивая диапозон от A до G


Сообщение отредактировал Manyasha - Вторник, 20.10.2015, 12:17
 
Ответить
СообщениеВсем большое спасибо за ответы.

Подскажите, а можно удалять столбцы не затрагивая диапозон от A до G

Автор - iGenex
Дата добавления - 19.10.2015 в 15:31
SLAVICK Дата: Понедельник, 19.10.2015, 15:52 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вместо
[vba]
Код
For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
[/vba]
Напишите
[vba]
Код
For i = ActiveSheet.UsedRange.Columns.Count To 8 Step -1
[/vba]


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеВместо
[vba]
Код
For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
[/vba]
Напишите
[vba]
Код
For i = ActiveSheet.UsedRange.Columns.Count To 8 Step -1
[/vba]

Автор - SLAVICK
Дата добавления - 19.10.2015 в 15:52
iGenex Дата: Вторник, 20.10.2015, 10:04 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Спасибо.
[moder]Не нужно цитировать весь пост![/moder]


Сообщение отредактировал Manyasha - Вторник, 20.10.2015, 12:17
 
Ответить
СообщениеСпасибо.
[moder]Не нужно цитировать весь пост![/moder]

Автор - iGenex
Дата добавления - 20.10.2015 в 10:04
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!