Без файла примера только так могу предложить: [vba]
Код
Sub Del() Dim e As String Dim DS, R, C, DelCount As Long Dim usl, Wh As Byte Application.ScreenUpdating = False usl = 33 For Wh = 1 To Sheets.Count With Worksheets(Wh) LastRow = Cells.SpecialCells(xlLastCell).Row LastCol = Cells.SpecialCells(xlLastCell).Column DelCount = 0 For C = 1 To LastCol For R = LastRow To 1 Step -1 e = Cells(R, C).Value DS = CStr(Len(e)) If DS > usl Then Cells(R, C).Delete Shift:=xlUp DelCount = DelCount + 1 End If Next R Next C MsgBox "На листе " & Chr(34) & Worksheets(Wh).Name & Chr(34) & " удалено " & DelCount & " ячеек с количеством знаков более " & usl End With Next Wh Application.ScreenUpdating = True End Sub
[/vba]
Перебирает все заполненные ячейки (в т.ч. и форматированные) и удаляет по условию количества знаков в ячейке. Процедура "тяжелая" получилась. Может как-то и полегче можно. Дали бы пример структуры данных, тогда можно упростить точно. Какой вопрос - такой ответ.
Без файла примера только так могу предложить: [vba]
Код
Sub Del() Dim e As String Dim DS, R, C, DelCount As Long Dim usl, Wh As Byte Application.ScreenUpdating = False usl = 33 For Wh = 1 To Sheets.Count With Worksheets(Wh) LastRow = Cells.SpecialCells(xlLastCell).Row LastCol = Cells.SpecialCells(xlLastCell).Column DelCount = 0 For C = 1 To LastCol For R = LastRow To 1 Step -1 e = Cells(R, C).Value DS = CStr(Len(e)) If DS > usl Then Cells(R, C).Delete Shift:=xlUp DelCount = DelCount + 1 End If Next R Next C MsgBox "На листе " & Chr(34) & Worksheets(Wh).Name & Chr(34) & " удалено " & DelCount & " ячеек с количеством знаков более " & usl End With Next Wh Application.ScreenUpdating = True End Sub
[/vba]
Перебирает все заполненные ячейки (в т.ч. и форматированные) и удаляет по условию количества знаков в ячейке. Процедура "тяжелая" получилась. Может как-то и полегче можно. Дали бы пример структуры данных, тогда можно упростить точно. Какой вопрос - такой ответ.EvgenyD
EvgenyD, Если с файлом легче будет тогда файл в приложении. Выйдет сделать так чтобы остались только те ячейки которые не болше 33 символа? А все остальные чтобы удалились?
EvgenyD, Если с файлом легче будет тогда файл в приложении. Выйдет сделать так чтобы остались только те ячейки которые не болше 33 символа? А все остальные чтобы удалились?Status-n1
Sub Del() Dim DS, R, C, DelCount As Long Dim usl, Wh As Byte Application.ScreenUpdating = False On Error Resume Next usl = 33 DelCount = 0 For Wh = 1 To Sheets.Count Worksheets(Wh).Activate LastRow = Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row For R = LastRow To 1 Step -1 e = Cells(R, 2).Value DS = Len(e) If DS > usl Then Cells(R, 2).Delete Shift:=xlUp DelCount = DelCount + 1 End If Next R Next Wh MsgBox "Всего " & "удалено " & DelCount & " ячеек с количеством знаков более " & usl Application.ScreenUpdating = True End Sub
[/vba]
Status-n1, [vba]
Код
Sub Del() Dim DS, R, C, DelCount As Long Dim usl, Wh As Byte Application.ScreenUpdating = False On Error Resume Next usl = 33 DelCount = 0 For Wh = 1 To Sheets.Count Worksheets(Wh).Activate LastRow = Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row For R = LastRow To 1 Step -1 e = Cells(R, 2).Value DS = Len(e) If DS > usl Then Cells(R, 2).Delete Shift:=xlUp DelCount = DelCount + 1 End If Next R Next Wh MsgBox "Всего " & "удалено " & DelCount & " ячеек с количеством знаков более " & usl Application.ScreenUpdating = True End Sub