Страницы: 1
RSS
Удаление строк и столбцов по условию
 
Всем доброго времени суток, кто решил откликнуться мне на помощь!

Ситуация в следующем, имеется файл, в котором ведется учет начислений заработной платы по отдельным статьям (субсидиям).
В файле Вы можете увидеть страницы с названиями "Субсидия_1", "Субсидия_2" и т.д..таких страниц может быть до 20ти и более..
Количество страниц прямо совпадает со списком из страницы "Справочник", также названия страниц согласованы с этим списком.
Мне необходим макрос, который будет выполнять следующие действия:

1) Пройдет по всем страницам, которые есть в списке в "Справочнике" и пересохранит всё, как значения, потому что каждая страница на 90% состоит из формул..
2) Далее макрос должен в каждой странице из списка проверить каждую строку, начиная со столбца "С" и до последнего столбца у которого есть заголовок в первой строке и если по этим всем столбцам все значения равны нулю, то удалить строку.
3) Далее макрос должен в каждой странице из списка проверить каждую колонку (у которой есть заголовок в первой строке) по четвёртой строке (начиная с J4, т.к. в этой и всех правее ячейках идёт сумма столбца) и если в ячейке выходит значение ноль, то удалить столбец.

Благодарю всех кто откликнется!
Изменено: XattoriXanzo - 16.01.2018 04:45:07
 
XattoriXanzo, Здравствуйте, на ваш пункт 1 - сами погуглите, полно примеров того как сохранить формулы как значения
На 2 и 3 - Вариант
Код
Sub test()
Application.ScreenUpdating = False
    Lrow = Sheets("Справочник").Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To Lrow
            ShName = Sheets("Справочник").Cells(i, 2).Value
            Sheets(ShName).Activate
            Lrow2 = Cells(Rows.Count, 1).End(xlUp).Row
            Lcol = Cells(1, Columns.Count).End(xlToLeft).Column
            For j = Lrow2 To 5 Step -1
                If WorksheetFunction.Sum(Range(Cells(j, 3), Cells(j, Lcol))) = 0 Then
                    Rows(j).Delete
                End If
            Next j
            
            For n = Cells(1, Columns.Count).End(xlToLeft).Column To 10 Step -1
                If WorksheetFunction.Sum(Range(Cells(4, n), Cells(Lrow2, n))) = 0 Then
                    Columns(n).Delete
                End If
            Next n
        Next i
Application.ScreenUpdating = True
End Sub
 
Александр П., Благодарю за то что откликнулись! Вроде бы Ваш макрос все выполняет, но по итогу выдаёт ошибку: "Run-time error "9". Subscript out of range"..это нормально? Извините если что, я в макросах не силен..поэтому и попросил все три пункта сразу..т.к. не знаю как то что я найду сращивать с тем что вы прислали..(

и ещё вспомнил, забыл сразу написать четвертый пункт..
4) необходимо чтобы в каждой странице по итогам первых трёх пунктов макрос удалил все значения нули. (очистил просто ячейки)
 
Может быть ещё кто-нибудь может помочь?
 
Вам уже ЗДЕСЬ помогают.
Я сам - дурнее всякого примера! ...
 
kuklp, пока ещё нет..иначе бы я писал по-вашему сюда..?
 
Цитата
XattoriXanzo написал:
но по итогу выдаёт ошибку: "Run-time error "9". Subscript out of range"..это нормально?
В вашем примере на листе справочник - список из 20 субсидий, в самом файле 3 листа которые нужно обработать, отсюда и ошибка. Вы же писали
Цитата
XattoriXanzo написал:
Пройдет по всем страницам, которые есть в списке в "Справочнике"
Удалите из листа Справочник те наименования листов которых нет в книге и запустите макрос, ошибка останется ?)
Цитата
XattoriXanzo написал:
и ещё вспомнил, забыл сразу написать четвертый пункт..
По поводу этого, я не из лени не стал предлагать решение всей задачи, а следуя правилам форума, - 1 тема - 1 вопрос, + название темы должно соответствовать вопросу. Комплексные задачи решают в другой ветке форума.
 
Александр П., Да, Вы правы, ошибки в этом случае нет. Благодарю!

Но пункты 1 и 4 я всёравно не смогу реализовать сам..наверное уже не стоит такую же тему разводить и в другой ветке форума..если может кто помогите пожалуйста!
 
XattoriXanzo, Ваше задание давно уже выполнено, Вы просто не отвечаете на лс! С Вашей стороны это ...!
КРОСС
Изменено: skais675 - 17.01.2018 10:34:24
 
XattoriXanzo, вот там и получайте помощь. На платной основе. Никто Вас не силовал создавать тему в Работе. Правильно: попросить перенести тему, а не создавать дубль.
 
Всем здравствуйте!
Проблема следующая.
Имеется оборудование экс№1, экс№2 и т.д. по ним есть разбивка на простои мех, гидр, элек, двс. там заносятся данные по часам простоя, если совпадает тогда выдает информацию о экскаваторе, но если нет информации получается пустая строчка или 0.

Вопрос: Как сделать чтобы пустые строчки с формулой где стоит 0 удалялись, а передвинулось оборудование ниже на котором имеется простой.
 
rus14spoon, приведите ник в соответстви с правилами форума. Зачем цифры посреди ника?
Вопрос другой, просится в новую тему
 
Цитата
vikttur написал:
rus14spoon, приведите ник в соответстви с правилами форума. Зачем цифры посреди ника?
У меня такой ник 14- это регион моего родного города!
 
А у нас такие порядки )
Вынесите регион в конец
Страницы: 1
Наверх