0 / 0 / 0
Регистрация: 12.04.2015
Сообщений: 53
|
||||||
1 | ||||||
Макрос для удаления строк с нулевыми значениями,сортировкой по нужным листам14.01.2019, 12:42. Показов 4736. Ответов 6
Всем доброго времени суток!
Решил сделать макросец для облегчения работы,но что-то идёт определенно не так,встал в тупик В общем задумка такова:для листов "пример N" (в примере их три,на деле штук 9) надо заменить формулы значениями (так как потом листы выдергиваются для различных операций), удаление строк где в 2017 и 2018 стоят нули, и сортировка от максимума к минимуму. Пытался писать пару кодиков,вот первый пример:
Прошу собсна указать на недочёты А также вопрос - если есть несколько листов (штук 5-6) которые не надо задействовать и штук 9 листов для которых пишется цикл,как указать чтобы выбирал только из предложенного ряда?или как-то добавить в список исключений листы которые трогать не надо?
0
|
14.01.2019, 12:42 | |
Ответы с готовыми решениями:
6
Скрытие строк с нулевыми значениями в столбцах Макрос удаления строк Макрос для удаления строк с уникальными значениями столбца Макрос для удаления строк |
0 / 0 / 0
Регистрация: 12.04.2015
Сообщений: 53
|
|
14.01.2019, 12:52 [ТС] | 2 |
В 9 строке кода заместо иероглифов стоит "Свод"
0
|
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
|
|
14.01.2019, 16:52 | 3 |
Andrey_konoval,
как пример... Кликните здесь для просмотра всего текста
Sub PRIMER() ' Application.ScreenUpdating = False Dim lRow As Long Dim iCntr As Long Dim sh As Object lRow = 12 Dim ST() ST = Array("B", "C") ' Массив с именами листов, в которых удаляем строки For Each sh In ThisWorkbook.Sheets For k = LBound(ST) To UBound(ST) If sh.Name = ST(k) Then With sh For iCntr = lRow To 1 Step -1 If .Cells(iCntr, 2).Value = 0 And .Cells(iCntr, 3).Value = 0 Then .Rows(iCntr).Delete Shift:=xlUp Else .Range(.Cells(iCntr, 2), .Cells(iCntr, 4)).Value = .Range(.Cells(iCntr, 2), .Cells(iCntr, 4)).Value End If Next End With End If Next Next End Sub Попробуйте сортировку сами...
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
14.01.2019, 18:05 | 4 | |||||
Andrey_konoval, Если уверены, что все листы, с перечисленными именами, наличествуют в активной книге, то можно и так :
0
|
0 / 0 / 0
Регистрация: 12.04.2015
Сообщений: 53
|
|
15.01.2019, 05:43 [ТС] | 5 |
Почему-то код работает неккоректно,первый лист обрабатывает как надо,а остальные два листа удаляет почти все строки
Добавлено через 9 минут Заменил в массиве на имена своих листов,код не работает
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
15.01.2019, 12:15 | 6 |
Сообщение было отмечено Andrey_konoval как решение
Решение
Andrey_konoval, Вам предлагалось два варианта, от каком из них идёт речь ? Если о моём, то я не поленился и проверил на выложенном файле, всё нормально, никаких лишних удалений.
Добавлено через 1 час 50 минут Походу я тестировал первый вариант в общем, вместо r(rw) просто напишите r(rw, 1)
1
|
0 / 0 / 0
Регистрация: 12.04.2015
Сообщений: 53
|
|
16.01.2019, 04:13 [ТС] | 7 |
Да,проверил,в таком виде код работает корректно,спасибо
0
|
16.01.2019, 04:13 | |
16.01.2019, 04:13 | |
Помогаю со студенческими работами здесь
7
Скрытие строк в таблице с нулевыми значениями Удаление Строк С нулевыми значениями во всех листах Создать внешний скрипт (макрос) для удаления строк с объеденными ячейками в нескольких файлах Excel в одной папке Макрос удаления строк и столбцов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |