Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как быстро удалить все ячейкко которые > чем 33 символа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как быстро удалить все ячейкко которые > чем 33 символа (Макросы/Sub)
Как быстро удалить все ячейкко которые > чем 33 символа
Status-n1 Дата: Понедельник, 06.10.2014, 19:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Подскажите как можно быстро удалить все ячейки со смещением вверх которые больше чем 33 символа все всей книге.
 
Ответить
СообщениеПодскажите как можно быстро удалить все ячейки со смещением вверх которые больше чем 33 символа все всей книге.

Автор - Status-n1
Дата добавления - 06.10.2014 в 19:39
EvgenyD Дата: Понедельник, 06.10.2014, 23:22 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Без файла примера только так могу предложить:
[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
Дата добавления - 06.10.2014 в 23:22
ShAM Дата: Понедельник, 06.10.2014, 23:36 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
И в прошлой теме файла не было, и в этой нет.
 
Ответить
СообщениеИ в прошлой теме файла не было, и в этой нет.

Автор - ShAM
Дата добавления - 06.10.2014 в 23:36
Status-n1 Дата: Понедельник, 06.10.2014, 23:57 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
EvgenyD, Если с файлом легче будет тогда файл в приложении. Выйдет сделать так чтобы остались только те ячейки которые не болше 33 символа? А все остальные чтобы удалились?
К сообщению приложен файл: 7465139.xlsx (89.8 Kb)
 
Ответить
СообщениеEvgenyD, Если с файлом легче будет тогда файл в приложении. Выйдет сделать так чтобы остались только те ячейки которые не болше 33 символа? А все остальные чтобы удалились?

Автор - Status-n1
Дата добавления - 06.10.2014 в 23:57
ShAM Дата: Вторник, 07.10.2014, 00:23 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Выйдет сделать так чтобы остались только те ячейки которые не болше 33 символа?

Почему нет?
К сообщению приложен файл: Status-n1.xlsm (72.9 Kb)
 
Ответить
Сообщение
Выйдет сделать так чтобы остались только те ячейки которые не болше 33 символа?

Почему нет?

Автор - ShAM
Дата добавления - 07.10.2014 в 00:23
EvgenyD Дата: Вторник, 07.10.2014, 01:29 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
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
[/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
[/vba]

Автор - EvgenyD
Дата добавления - 07.10.2014 в 01:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как быстро удалить все ячейкко которые > чем 33 символа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!