Страницы: 1
RSS
[VBA] поиск последней заполненной ячейки в первой таблице
 
Добрый день товарищи.
подскажите пожалуйста такой момент:
Есть две одинаковые таблицы в Excel. сначала идет первая, через 5 строчек начинается вторая,

Можно ли определить последнюю строчку первой таблицы, если мы знаем, что после посл заполненной строчки 1 таблицы идет 5 пустых строк и начинается вторая таблица?


Код
Sub lLastRow()
Dim lLastRow As Long
lLastRow = Cells(Rows.Count, 12).End(xlUp).Row
Cells(lLastRow, 12).Select
End Sub
caustic
 
Циклом не устраивает?
 
Используйте свойство .CurrentRegion
Код
' "регионом" считается область на листе, имеющая хотя бы одну непустую ячейку на своих границах
' допустим, первая таблица есть $C$2:$V$8, вторая - $C$14:$U$30
Set c = Сells(4, 4) ' ячейка "внутри" первой таблицы, может быть любой, например, левой-верхней (Cells(2, 3), Range("C2"), [c2] ), можно её и прямо указать - Range("D4").CurrentRegion....
? c.CurrentRegion.Row ' абсолютный номер первой строки первой таблицы
? c.CurrentRegion.Rows.Count ' количество строк первой таблицы
? c.CurrentRegion.Row + c.CurrentRegion.Rows.Count - 1 ' абсолютный номер последней строки первой таблицы
? c.CurrentRegion.Row + c.CurrentRegion.Rows.Count - 1 + 6 ' абсолютный номер первой строки следующей таблицы, аналогично:
? Range("C14").CurrentRegion.Row ' абсолютный номер первой строки второй таблицы
' и так далее и тому подобное

Таким образом, вам достаточно знать адрес любой ячейки в первой таблице. И точно так же с любой последующей "таблицей".
Если же нужно ещё и определить, где именно находится первая таблица - тут не намного сложнее. Например, если вся используемая область листа определяется как ActiveSheet.UsedRange, то левая-верхняя ячейка вышеуказанного диапазона как раз и относится к первому региону...

Впрочем, всё же лучше "таблицы" с данными разносить на отдельные листы...
Изменено: AndreTM - 09.05.2013 18:29:56
 
Юрий М, циклом устроит
AndreTM, попробую, спасибо!
caustic
 
Вариант от AndreTM будет быстрее )) А  циклом - до первой пустой ячейки.
 
 а как будет выглядеть код, если после фильтрации нужно выделить этот диапазон и вставить в другое место
типа

Код
Sub Macro4()
Dim i As Long
Dim iLastRow As Long
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Код
Cells(1, 19).Activate
ActiveCells.AutoFilter
ActiveSheet.Range(Cells(2, 19), Cells(iLastRow, 19)).AutoFilter Field:=19, Criteria1:="JUICE"
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells($$$$$, 19), Cells($$$$, 19)).Copy
Range(Cells($$$$$, 19), Cells($$$$$$, 19)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
End Sub 

что ставить вместо $$ - это по сути всегда разные номера строк. нужно какие-то функции писать? подскажите, пожалуйста!
спасибо
 
Цитата
caustic пишет:
Можно ли определить последнюю строчку первой таблицы, если мы знаем, что после посл заполненной строчки 1 таблицы идет 5 пустых строк и начинается вторая таблица?
такой вариант
Код
Sub test()
Dim oCell As Range
Dim nLastCell, nRow As Long
nLastCell = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For Each oCell In Range(Cells(1, 1), Cells(nLastCell, 1))
If WorksheetFunction.CountA(Range(Cells(oCell.Row, 1), Cells(oCell.Row + 5, 1))) = 0 Then
    nRow = oCell.Row - 1
    Exit For
End If
Next
MsgBox "Последняя строка для первой таблицы: " & nRow & Chr(10) & "Последняя строка для второй таблицы: " & nLastCell
End Sub 
 
manyaffkina,
Код
sheets(1).usedrange.cells(1).currentregion.copy sheets(2).cells(1) 
Не поленился, сделал файл - работает с фильтрованными  :)
Изменено: Hugo - 03.04.2014 17:43:24
 
Цитата
после фильтрации нужно выделить этот диапазон и вставить в другое место
Копируйте видимые
 
а так не канает?


Код
lLastRow = Cells(1, 12).End(xlDown).Row
 
подскажите пожалуйста что означает эта строка кода :oops:

lLastRow = Cells(1, 12).End(xlDown).Row
 
Цитата
что означает эта строка кода
От ячейки L1 и вниз до первой пустой ячейки
Страницы: 1
Читают тему
Наверх