Всем доброго времени суток, кто решил откликнуться мне на помощь!
Ситуация в следующем, имеется файл, в котором ведется учет начислений заработной платы по отдельным статьям (субсидиям). В файле Вы можете увидеть страницы с названиями "Субсидия_1", "Субсидия_2" и т.д..таких страниц может быть до 20ти и более.. Количество страниц прямо совпадает со списком из страницы "Справочник", также названия страниц согласованы с этим списком. Мне необходим макрос, который будет выполнять следующие действия:
1) Пройдет по всем страницам, которые есть в списке в "Справочнике" и пересохранит всё, как значения, потому что каждая страница на 90% состоит из формул.. 2) Далее макрос должен в каждой странице из списка проверить каждую строку, начиная со столбца "С" и до последнего столбца у которого есть заголовок в первой строке и если по этим всем столбцам все значения равны нулю, то удалить строку. 3) Далее макрос должен в каждой странице из списка проверить каждую колонку (у которой есть заголовок в первой строке) по четвёртой строке (начиная с J4, т.к. в этой и всех правее ячейках идёт сумма столбца) и если в ячейке выходит значение ноль, то удалить столбец.
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) необходимо чтобы в каждой странице по итогам первых трёх пунктов макрос удалил все значения нули. (очистил просто ячейки)
XattoriXanzo написал: но по итогу выдаёт ошибку: "Run-time error "9". Subscript out of range"..это нормально?
В вашем примере на листе справочник - список из 20 субсидий, в самом файле 3 листа которые нужно обработать, отсюда и ошибка. Вы же писали
Цитата
XattoriXanzo написал: Пройдет по всем страницам, которые есть в списке в "Справочнике"
Удалите из листа Справочник те наименования листов которых нет в книге и запустите макрос, ошибка останется ?)
Цитата
XattoriXanzo написал: и ещё вспомнил, забыл сразу написать четвертый пункт..
По поводу этого, я не из лени не стал предлагать решение всей задачи, а следуя правилам форума, - 1 тема - 1 вопрос, + название темы должно соответствовать вопросу. Комплексные задачи решают в другой ветке форума.
Александр П., Да, Вы правы, ошибки в этом случае нет. Благодарю!
Но пункты 1 и 4 я всёравно не смогу реализовать сам..наверное уже не стоит такую же тему разводить и в другой ветке форума..если может кто помогите пожалуйста!
XattoriXanzo, вот там и получайте помощь. На платной основе. Никто Вас не силовал создавать тему в Работе. Правильно: попросить перенести тему, а не создавать дубль.
Всем здравствуйте! Проблема следующая. Имеется оборудование экс№1, экс№2 и т.д. по ним есть разбивка на простои мех, гидр, элек, двс. там заносятся данные по часам простоя, если совпадает тогда выдает информацию о экскаваторе, но если нет информации получается пустая строчка или 0.
Вопрос:Как сделать чтобы пустые строчки с формулой где стоит 0 удалялись, а передвинулось оборудование ниже на котором имеется простой.