Я нашел этот метод для поиска последних данных, содержащих строку в листе:
ws.Range("A65536").End(xlUp).row
Есть ли аналогичный метод для поиска последних данных, содержащих столбец в листе?
Спасибо.
Я нашел этот метод для поиска последних данных, содержащих строку в листе:
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
в прямом окне.