Добрый вечер. Нужно удалить группировки (от 1 до 5 уровня группировки) из прайса. Выделить строку, и удалить все данные со всеми вложениями сразу. Вар-т: Выделить строку группировки --- Del (удаляет первую строку, без вложения)--- Данные - Разгруппировать. (Не работает!) Пример во вложении: строку 7 (01 Ноутбуки, ультрабуки, нетбуки) оставить! строку 274 (02 Интернет-планшет) с вложениями удалить! Вопрос № 2 Удалить 2-й уровень группировки в 01 Ноутбуки, ультрабуки, нетбуки --- строку 251(01.06 Аксессуары к ноутбукам) со всеми вложениями.
Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
Любой макрос должен заканчиваться оператором End Sub.
Все, что находится между Sub и End Sub - тело макроса, т.е. команды, которые будут выполняться при запуске макроса.
Исправил, теперь точно удаляется от активной ячейки до конца таблицы, при условии вхождения в группировку до 5
Код
Sub test()
For iRow = Cells(Rows.Count, 4).End(xlUp).Row To ActiveCell.Row Step -1
If Rows(iRow).OutlineLevel < 5 Then
Rows(iRow).Delete
End If
Next
End Sub
Я конечно, извиняюсь! Но не работает у меня этот макрос так как нужно. Удаляет информацию с 1 -го уровня вложения группировки, и все! Но во 2-3-4-5 уровнях вложения группировки, все категории и товары остаются! Что бы увидеть это, нужно нажать на 2-3-4-5 уровни вложения группировки.
Цитата
от активной ячейки до конца таблицы
Удалять все до конца, нельзя! В примере указаны две группировки, а в основном документе их 30. Как тогда удалить выборочно: Например 25/7/8/10 группировки со всеми вложениями (5-ю уровнями группировки) ?
Или как осуществить выборочное удаление с разных слоев/вложений группировки?
Цитата
Вопрос № 2 Удалить 2-й уровень группировки в 01 Ноутбуки, ультрабуки, нетбуки --- строку 251(01.06 Аксессуары к ноутбукам) со всеми вложениями.
Принцип: Если активная ячейка находится в первом уровне группировки, то ищем окончание этой группы, т.е следующую группу первого уровня, и удаляем от активной ячейки до конца именно текущей группы
Код
Sub test()
If Rows(ActiveCell.Row).OutlineLevel = 1 Then n = ActiveCell.Row Else Exit Sub
For i = n To 345
If i <> n Then
If Rows(i).OutlineLevel = 1 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления (1 группа либа пустая строка)
End If
Next
mska:
For irow = i - 1 To n Step -1
Rows(irow).Delete
Next
End Sub
вопрос 2 у далит подгруппу Ультрабуки при условии что активная ячейка была на "01 Ноутбуки, ультрабуки, нетбуки " перед запуском
Код
Sub test1()
Z = 2 'Номер группы во 2 группировке
If Rows(ActiveCell.Row).OutlineLevel = 1 Then n = ActiveCell.Row Else Exit Sub
c = 1
For ii = n To 345
If Rows(ii).OutlineLevel = 2 Then
If c = Z Then
n = ii
GoTo mask1
Else
c = c + 1
End If
End If
Next
mask1:
For i = ii To 345
If i <> ii Then
If Rows(i).OutlineLevel <= 2 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления
End If
Next
mska:
For irow = i - 1 To n Step -1
Rows(irow).Delete
Next
End Sub
Sub test()
If Rows(ActiveCell.Row).OutlineLevel = 1 Then n = ActiveCell.Row Else Exit Sub
For i = n To 345
If i <> n Then
If Rows(i).OutlineLevel = 1 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления (1 группа либа пустая строка)
End If
Next
mska:
For irow = i - 1 To n Step -1
Rows(irow).Delete
Next
End Sub
ps: вместо 345 указываем, номер строки до какой нужно удалить информацию *только первый уровень группировки.
Вариант №2 Возникли вопросы:
Код
Sub test1()
Z = 2 'Номер группы во 2 группировке
If Rows(ActiveCell.Row).OutlineLevel = 1 Then n = ActiveCell.Row Else Exit Sub
c = 1
For ii = n To 345
If Rows(ii).OutlineLevel = 2 Then
If c = Z Then
n = ii
GoTo mask1
Else
c = c + 1
End If
End If
Next
mask1:
For i = ii To 345
If i <> ii Then
If Rows(i).OutlineLevel <= 2 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления
End If
Next
mska:
For irow = i - 1 To n Step -1
Rows(irow).Delete
Next
End Sub
Код
Z = 2 'Номер группы во 2 группировке
Здесь указываем номер группировки ОТкуда удалять от 1-5?
Код
For ii = n To 345
Здесь указываем строку ОТкуда удалять?
Код
For i = ii To 345
Здесь указываем строку ДОкуда удалять?
Код
If Rows(i).OutlineLevel <= 2 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления
Вместо 2 указываем номер группировки ДОкуда удалять от 1-5?
"Z = 2" это номер подгруппы: 2.2(во втором уровне группировки 2 по счёту, а группировка указана вот тут
Код
If Rows(ii).OutlineLevel = 2 Then
и
Код
If Rows(i).OutlineLevel <= 2 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления(т.е. если следующая группировка 2 или 1 уровня или конец таблицы)
Sub test()
If Rows(ActiveCell.Row).OutlineLevel = 1 Then n = ActiveCell.Row Else Exit Sub
Cells(Rows.Count, 4).End(xlUp).Row-1 'последняя заполненная ячейка
If i <> n Then
If Rows(i).OutlineLevel = 1 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления (1 группа либа пустая строка)
End If
Next
mska:
For irow = i - 1 To n Step -1
Rows(irow).Delete
Next
End Sub
Sub test()
If Rows(ActiveCell.Row).OutlineLevel = 1 Then n = ActiveCell.Row Else Exit Sub
For i = n To Cells(Rows.Count, 4).End(xlUp).Row-1
If i <> n Then
If Rows(i).OutlineLevel = 1 Or Cells(i, 4) = "" Then GoTo mska ' определяется конец области удаления (1 группа либа пустая строка)
End If
Next
mska:
For irow = i - 1 To n Step -1
Rows(irow).Delete
Next
End Sub