Excel VBA – поиск последнего столбца с данными

Я нашел этот метод для поиска последних данных, содержащих строку в листе:

ws.Range("A65536").End(xlUp).row 

Есть ли аналогичный метод для поиска последних данных, содержащих столбец в листе?

Благодарю.

Много способов сделать это. Самое надежное – найти.

 Dim rLastCell As Range Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False) MsgBox ("The last used column is: " & rLastCell.Column) 

Если вы хотите найти последний столбец, используемый в определенной строке, вы можете использовать:

 Dim lColumn As Long lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column 

Использование используемого диапазона (менее надежного):

 Dim lColumn As Long lColumn = ws.UsedRange.Columns.Count 

Использование используемого диапазона не будет работать, если у вас нет данных в столбце A. См. Здесь для другой проблемы с используемым диапазоном:

См. Здесь относительно сброса используемого диапазона.

Я знаю, что это старо, но я проверял это разными способами, и это еще не подвело меня, если кто-то не скажет мне иначе.

Номер строки

 Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

Письмо в колонке

 ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0) 

Номер столбца

 ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column 

Попробуйте использовать код после активного листа:

 Dim J as integer J = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row 

Если вы используете Cells.SpecialCells(xlCellTypeLastCell).Row Только, проблема будет в том, что информация xlCellTypeLastCell не будет обновляться, если только вы не выполните действие «Сохранить файл». Но использование UsedRange всегда будет обновлять информацию в реальном времени.

Я думаю, мы можем изменить код UsedRange из ответа @ Readify выше, чтобы получить последний использованный столбец, даже если начальные столбцы пусты или нет.

Итак, это lColumn = ws.UsedRange.Columns.Count изменено на

это lColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1 будет давать надежные результаты всегда

введите описание изображения здесь

 ?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1 

Над строкой Урожайность 9 в ближайшем окне.

Вот что-то, что может быть полезно. Выбрав весь столбец на основе строки, содержащей данные, в этом случае я использую 5-ю строку:

 Dim lColumn As Long lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column MsgBox ("The last used column is: " & lColumn) 
  • Управление IE11 «Вы хотите открыть / сохранить» диалоговые windows в VBA
  • Как я могу кодировать строку в Excel в VBA?
  • Скрытие всех выбранных строк данных
  • Могу ли я сделать этот макрос более эффективным или быстрым?
  • Удалить все повторяющиеся строки Excel vba
  • Транспонирование диапазона в VBA
  • Должен ли я снова включить .CutCopyMode, прежде чем выйти из моей подпрограммы?
  • Как вы получаете Range для возвращения своего имени?
  • VBA-подзаголовок вне допустимого диапазона - ошибка 9
  • Excel VBA - функция QueryTable AfterRefresh, которая не вызывается после завершения обновления
  • Поиск первой пустой строки, затем запись на нее
  • Давайте будем гением компьютера.