Страницы: 1
RSS
Найти последнюю строчку и удалить все ниже
 
Всем привет !
В VBA не силен... нужен очень простой макрос.
Нужно найти последнюю заполненную ячейку в столбце "А" и удалить все строки ниже.
Потом найти последнюю заполненную ячейку в 1 строке и удалить все столбцы, что правее нее.
Спасибооо
 
Malkov111123, это всё на бумажке или у Вас есть Excel-файл?
 
Юрий М,
 
А что сразу Юрий М? )) См. вариант:
Код
Sub Macro1()
Dim LastRow As Long, LastColumn As Long, LastCol As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    lastrw = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    LastCol = Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
    Range(Cells(LastRow + 1, 1), Cells(lastrw, 1)).EntireRow.Delete
    Range(Cells(1, LastColumn + 1), Cells(1, LastCol)).EntireColumn.Delete
End Sub
 
Юрий М, Крутяк, но удаляет и то, что последнее заполнено.

А надо что бы находил и удалял все что ниже и правее.

Если нажать много раз, в итоге он удалит всю таблицу )  
Изменено: Malkov111123 - 29.12.2019 19:00:03
 
Накосячил: не подстраховался.
Код
Sub Macro1()
Dim LastRow As Long, LastRw As Long, LastColumn As Long, LastCol As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    LastRw = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
    LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    LastCol = Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column + 1
    Range(Cells(LastRow + 1, 1), Cells(LastRw, 1)).EntireRow.Delete
    Range(Cells(1, LastColumn + 1), Cells(1, LastCol)).EntireColumn.Delete
End Sub
 
Код
Sub DelAfter()
  Dim n&
  n = Cells(Rows.Count, 1).End(xlUp).Row
  Rows(n + 1).Resize(Rows.Count - n).Delete
  n = Cells(1, Columns.Count).End(xlToLeft).Column
  Columns(n + 1).Resize(, Columns.Count - n).Delete
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Может так
Код
Sub Perenos()
Range("A1").CurrentRegion.Copy
Worksheets.Add
Range("A1").PasteSpecial
Range("A1").Select
Worksheets("Лист1").Delete
End Sub
 
Всем спасибо.
Решение найдено.
Пока ждал появились еще идеи. Наверное в платный надо ? Или кто-то возьмется сделать из тут присутствующих  ?
Там пару проверок еще нужно по самой таблице
Изменено: Malkov111123 - 29.12.2019 19:21:11
 
см. личные сообщения. решим
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Malkov111123 написал:
Пока ждал появились еще идеи. Наверное в платный надо ?
В платный необязательно, зависит от сложности "идей"; а вот новые темы на каждую "идею" - надо.
 
Kuzmich,Интересное решение. Но тут мешает "Лист1", если нажать повторно, естественно, он его не найдет и не сможет удалить
 
Цитата
Malkov111123 написал:
Интересное решение
только мешает не лист, а обязательное требование непрерывного диапазона.
По вопросам из тем форума, личку не читаю.
 
Цитата
Malkov111123 написал:
Интересное решение
заполните в исходном листе чем-нибудь 3 ячейки: А1, В2 и С3
судя по тому, что написано в #1 после всех удалений должна остаться только А1
а что оставит интересное решение?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Malkov111123,
Добавьте в конце макроса строчку
Код
ActiveSheet.Name = "Лист1"
 
Kuzmich, не в этом дело. что будет для

?
По вопросам из тем форума, личку не читаю.
 
БМВ,
Я ориентировался на пример из сообщения #3
Страницы: 1
Наверх