Имеется прайс лист на 10000 позиций, к сожалению для работы с ним не все категории нужны которые в нем есть. Категории присутствуют в третьей колонке данного прайса листа 1. На листе 2 [pr] в столбце 3 сверху вниз будут указаны наименования категорий которые должны быть удалены с основного прайса листа 1 Помогите пожалуйста сделать небольшой макрос который бы по заданным значениям находил и удалял данные строки с основного прайса на Листе 1.
Имеется прайс лист на 10000 позиций, к сожалению для работы с ним не все категории нужны которые в нем есть. Категории присутствуют в третьей колонке данного прайса листа 1. На листе 2 [pr] в столбце 3 сверху вниз будут указаны наименования категорий которые должны быть удалены с основного прайса листа 1 Помогите пожалуйста сделать небольшой макрос который бы по заданным значениям находил и удалял данные строки с основного прайса на Листе 1.wwizard
Sub del0() Dim sh As Worksheet, pr As Worksheet, rCell As Range, rCell2 As Range Application.ScreenUpdating = False Set pr = Sheets("pr") Set sh = Sheets(1) For Each rCell In pr.[c1].Resize(pr.UsedRange.Rows.Count, 1) For Each rCell2 In sh.[c2].Resize(sh.UsedRange.Rows.Count, 1) If rCell2.Value = rCell.Value Then sh.Rows(rCell2.Row).Delete shift:=xlUp End If Next Next Application.ScreenUpdating = True End Sub
[/vba]
[vba]
Код
Sub del0() Dim sh As Worksheet, pr As Worksheet, rCell As Range, rCell2 As Range Application.ScreenUpdating = False Set pr = Sheets("pr") Set sh = Sheets(1) For Each rCell In pr.[c1].Resize(pr.UsedRange.Rows.Count, 1) For Each rCell2 In sh.[c2].Resize(sh.UsedRange.Rows.Count, 1) If rCell2.Value = rCell.Value Then sh.Rows(rCell2.Row).Delete shift:=xlUp End If Next Next Application.ScreenUpdating = True End Sub
Sub Del_Array_SubStr() Dim sSubStr As String 'искомое слово или фраза Dim lCol As Long 'номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long
lCol = 3 'номер столбца в котором будем искать
Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count 'Имя листа с диапазоном значений на удаление With Sheets("pr") avArr = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)) 'диапазон с критериями End With 'удаляем For lr = 1 To UBound(avArr, 1) sSubStr = avArr(lr, 1) For li = lLastRow To 1 Step -1 If CStr(Cells(li, lCol)) = sSubStr Then Rows(li).Delete Next li Next lr Application.ScreenUpdating = 1 End Sub
Sub Del_Array_SubStr() Dim sSubStr As String 'искомое слово или фраза Dim lCol As Long 'номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long
lCol = 3 'номер столбца в котором будем искать
Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count 'Имя листа с диапазоном значений на удаление With Sheets("pr") avArr = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)) 'диапазон с критериями End With 'удаляем For lr = 1 To UBound(avArr, 1) sSubStr = avArr(lr, 1) For li = lLastRow To 1 Step -1 If CStr(Cells(li, lCol)) = sSubStr Then Rows(li).Delete Next li Next lr Application.ScreenUpdating = 1 End Sub
Sub ertert() With Sheets("sheet1") With .Range("A1:V" & .Cells(Rows.Count, 1).End(xlUp).Row) .AdvancedFilter 1, Sheets("pr").Cells(3).CurrentRegion .Offset(1).EntireRow.Delete End With .ShowAllData End With End Sub
[/vba]
ПС имхо, хороший приемчик и довольно распространенный. Чтобы не забылось, в Полезные приемы положим?
или вот так с фильтром: [vba]
Код
Sub ertert() With Sheets("sheet1") With .Range("A1:V" & .Cells(Rows.Count, 1).End(xlUp).Row) .AdvancedFilter 1, Sheets("pr").Cells(3).CurrentRegion .Offset(1).EntireRow.Delete End With .ShowAllData End With End Sub
[/vba]
ПС имхо, хороший приемчик и довольно распространенный. Чтобы не забылось, в Полезные приемы положим?nilem