Страницы: 1
RSS
iLastRow
 
Подскажите    
iLastRow = .Cells(Rows.Count, 3).End(xlUp).Row  
присваиваю значение iLastRow последней строки снизу 3 колонки, а как узнать самую последнюю строку всех колонок... Просто строки заполняются не во всех колонках, а проверять и сравнивать iLastRow на каждую колонку и присваивать большее значение очень муторно, подскажите, как можно найти самую последнюю (нижнюю) заполненую строку... Спасибо
 
Public Function LastCell(Optional ws As Worksheet) As Range  
   If ws Is Nothing Then Set ws = ActiveSheet  
   Set rng = ws.Cells  
   Set LastCell = rng(1)  
   On Error Resume Next  
   Set LastCell = Intersect( _  
     rng.Find("*", rng(1), xlValues, xlWhole, xlByRows, _  
       xlPrevious).EntireRow, _  
     rng.Find("*", rng(1), xlValues, xlWhole, xlByColumns, _  
       xlPrevious).EntireColumn)  
End Function  
 
Sub Test()  
MsgBox LastCell(Worksheets(1)).Row  
End Sub
KL
 
А через  UsedRange?  
В принципе есть ограничение, формула может быть протянута и возвращать пустую строку нулевой длины...  
 
iRow = UsedRange.Row + UsedRange.Rows.Count - 1  
   
With ActiveSheet.UsedRange  
         
       iRow = .Row + .Rows.Count - 1  
       iClm = .Column + .Columns.Count - 1  
   
End With
 
UsedRange включает не только данные, но и форматы, т.ч. я бы на него не очень полагался, если речь не идет о чистой базе данных без форматов :-)
KL
 
Ну и еще ZVI выкладывал решения по поиску крайней заполненной ячейки, приложу файлик. Может пригодится топик стартеру, или другим ищущим...
 
Ну уж тогда и мои комментарии про все сразу :-)  
 
1) UsedRange  
- включает как заполненные ячейки, так и пустые, но с форматированием  
- не всегда автоматически обновляется после удаления строк (версии до XL2007)  
 
2) SpecialCells(xlCellTypeLastCell)  
- включает как заполненные ячейки, так и пустые, но с форматированием  
- не всегда автоматически обновляется после удаления строк  
 
3) Find(What:="*"...  
- дает неверный результат в случае со слитыми ячейками в конце диапазона  
 
4) End(xlDown)  
- действует только в одном столбце  
- дает последнюю строку только в непрерывном списке  
 
5) End(xlUp)  
- действует только в одном столбце
KL
 
У меня сейчас просчитываются весь диапозон столбцов, это очень долго, надо чтобы определило последнюю заполненую строку и посчитало только до неё.  
"=MIN(IF((База!C2=RC2)*(База!C3=R1C4)*(База!C4=R2C)*(База!C5=R3C),БазаC6,""""))"
 
kuziavka,  
потеряли "свою" тему?  
http://www.planetaexcel.ru/forum.php?thread_id=27416
 
Казанский,  
Спасибо Вам.
Страницы: 1
Читают тему
Наверх