Добрый день! Нужна помощь в разборе документа. Есть книга в excel в которой более 200 листов, на каждом листе таблица. Нужно организовать поиск по столбцу ИННЮЛ значения которые начинаются с 52, если не начинается с 52 или пустая ячейка то удалять всю строку. Так пройти по всему документу.
Добрый день! Нужна помощь в разборе документа. Есть книга в excel в которой более 200 листов, на каждом листе таблица. Нужно организовать поиск по столбцу ИННЮЛ значения которые начинаются с 52, если не начинается с 52 или пустая ячейка то удалять всю строку. Так пройти по всему документу.dmitriy_008
Sub www() Dim sh As Worksheet, c As Range For Each sh In ThisWorkbook.Worksheets Set c = sh.Range("1:1").Find("ИННЮЛ", , , xlPart, , , False) If Not c Is Nothing Then With Intersect(sh.Columns(c.Column), sh.UsedRange) .SpecialCells(4).EntireRow.Delete .AutoFilter 1, "<520000000", xlOr, ">=530000000" .Offset(1).SpecialCells(12).EntireRow.Delete .Parent.AutoFilterMode = 0 End With End If Next End Sub
[/vba]
[vba]
Код
Sub www() Dim sh As Worksheet, c As Range For Each sh In ThisWorkbook.Worksheets Set c = sh.Range("1:1").Find("ИННЮЛ", , , xlPart, , , False) If Not c Is Nothing Then With Intersect(sh.Columns(c.Column), sh.UsedRange) .SpecialCells(4).EntireRow.Delete .AutoFilter 1, "<520000000", xlOr, ">=530000000" .Offset(1).SpecialCells(12).EntireRow.Delete .Parent.AutoFilterMode = 0 End With End If Next End Sub
Sub delRows() Dim sh, lr&, i&, x As Range For Each sh In ThisWorkbook.Sheets With sh Set x = .Rows(1).Find(What:="ИННЮЛ", LookAt:=xlWhole) If Not x Is Nothing Then lr = .Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 2 Step -1 If Left(.Cells(i, x.Column), 2) <> "52" Then .Cells(i, x.Column).EntireRow.Delete End If Next i End If End With Next sh End Sub
[/vba]
еще вариант: [vba]
Код
Sub delRows() Dim sh, lr&, i&, x As Range For Each sh In ThisWorkbook.Sheets With sh Set x = .Rows(1).Find(What:="ИННЮЛ", LookAt:=xlWhole) If Not x Is Nothing Then lr = .Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 2 Step -1 If Left(.Cells(i, x.Column), 2) <> "52" Then .Cells(i, x.Column).EntireRow.Delete End If Next i End If End With Next sh End Sub
Sub uuu() Dim i&, LastRow& Dim sh As Worksheet Dim stol As Long Dim rFndRng As Range For Each sh In ThisWorkbook.Sheets With sh sh.Activate
LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row Set rFndRng = ActiveSheet.UsedRange.Find("ИННЮЛ", , xlFormulas, xlWhole) stol = rFndRng.Column For i = LastRow To 2 Step -1 If Cells(i, stol) = "" Or Left(Cells(i, stol), 2) <> 52 Then Rows(i).Delete End If Next i End With Next sh End Sub
[/vba] там на первом листе кнопочка
и мой ущербненький вариантик [vba]
Код
Sub uuu() Dim i&, LastRow& Dim sh As Worksheet Dim stol As Long Dim rFndRng As Range For Each sh In ThisWorkbook.Sheets With sh sh.Activate
LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row Set rFndRng = ActiveSheet.UsedRange.Find("ИННЮЛ", , xlFormulas, xlWhole) stol = rFndRng.Column For i = LastRow To 2 Step -1 If Cells(i, stol) = "" Or Left(Cells(i, stol), 2) <> 52 Then Rows(i).Delete End If Next i End With Next sh End Sub
Правильно. Ты под Вичем точки не везде поставил [vba]
Код
Sub uuu() Dim i&, LastRow& Dim sh As Worksheet Dim stol As Long Dim rFndRng As Range For Each sh In ThisWorkbook.Sheets With sh LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row Set rFndRng = .UsedRange.Find("ИННЮЛ", , xlFormulas, xlWhole) stol = rFndRng.Column For i = LastRow To 2 Step -1 If .Cells(i, stol) = "" Or Left(.Cells(i, stol), 2) <> 52 Then .Rows(i).Delete End If Next i End With Next sh End Sub
Правильно. Ты под Вичем точки не везде поставил [vba]
Код
Sub uuu() Dim i&, LastRow& Dim sh As Worksheet Dim stol As Long Dim rFndRng As Range For Each sh In ThisWorkbook.Sheets With sh LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row Set rFndRng = .UsedRange.Find("ИННЮЛ", , xlFormulas, xlWhole) stol = rFndRng.Column For i = LastRow To 2 Step -1 If .Cells(i, stol) = "" Or Left(.Cells(i, stol), 2) <> 52 Then .Rows(i).Delete End If Next i End With Next sh End Sub