2015-11-27 2 views
1

Мы находим последнюю строку с помощью строки кодаКонцептуальное понимание xlDown

lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

Я освежать мое концептуальное понимание xlDown. Я ссылаюсь на данные в столбце B в Листе 1, как указано ниже.

xldown_issue1

Моего understaqnding Конец (xlDown) был то, что он ищет сверху вниз находя последнюю использованную ячейку перед концепцией пустого cell.Its можно имитировать нажатие Ctrl вниз. Если мы выделим столбец, содержащий данные, смешанные с пробелами, а затем нажмите ctrl down - он перейдет в ячейку перед первой пустой ячейкой. Нажатие ctrl вниз в столбце B Лист 1 принимает значение B2, а затем - B18. Но если я использую следующий фрагмент кода я получаю последнюю строку как 1048576.

xldown_issue2

Какая логика следует этот фрагмент кода? Может ли кто-нибудь объяснить это, чтобы прояснить эту тривиальную проблему.

+0

@GSerg Спасибо, он разъясняет это. – skkakkar

+0

Обратите внимание, что .End работает только с видимыми ячейками, поэтому может давать «неправильный» ответ, когда строки скрыты. –

+0

@Charles Williams Спасибо за разъяснение. – skkakkar

ответ

2

Вы получите тот же результат, если вы удалите .End():

lastRow = .Cells(.Rows.Count, "B").Row 

Это потому, что ws.Cells(ws.Rows.Count, "B") уже последняя возможная ячейка B колонны. Вызов .End() на нем разрешен, но ничего не делает, потому что некуда идти.

В противном случае ваше понимание будет верным.