Значение .Cells(.Rows.Count, «A» ). End (xlUp).row

Вопрос:Мне просто интересно, можете ли вы помочь мне лучше понять, что делает .Cells(.Rows.Count,"A").End(xlUp).row. Я понимаю часть перед частью .End. Лучший ответ: Он используется для определения того, сколько строк содержит данные на листе, который содержит данные в столбце "А". Полное использование lastRowIndex = ws.Cells(ws.Rows.Count, "A").End(xlUp).row Где ws - объект Worksheet. В примере вопросов подразумевалось, что оператор

Вопрос:

Мне просто интересно, можете ли вы помочь мне лучше понять, что делает .Cells(.Rows.Count,»A»).End(xlUp).row. Я понимаю часть перед частью .End.

Лучший ответ:

Он используется для определения того, сколько строк содержит данные на листе, который содержит данные в столбце “А”. Полное использование

lastRowIndex = ws.Cells(ws.Rows.Count, «A»).End(xlUp).row

Где ws – объект Worksheet. В примере вопросов подразумевалось, что оператор находился внутри блока With

With ws lastRowIndex = .Cells(.Rows.Count, «A»).End(xlUp).row End With

  • ws.Rows.Count возвращает общее количество строк на листе (1048576 в Excel 2010).
  • .Cells(.Rows.Count, «A») возвращает нижнюю часть ячейки в столбце “A” на листе

Тогда существует метод End. Документация неоднозначна относительно того, что она делает.

Возвращает объект Range, который представляет ячейку в конце области, содержащей исходный диапазон

В частности, он не определяет, что такое “регион”. Мое понимание – это область непрерывного диапазона непустых ячеек. Таким образом, ожидаемое использование должно начинаться с ячейки в регионе и находить последнюю ячейку в этой области в этом направлении от исходной ячейки. Однако есть несколько исключений, если вы не используете его так:

  • Если диапазон – несколько ячеек, он будет использовать область rng.cells(1,1).
  • Если диапазон не находится в регионе или диапазон уже находится в конце области, он будет перемещаться в направлении, пока он не войдет в область и не вернет первую обнаруженную ячейку в этом регионе.
  • Если он встречает край листа, он вернет ячейку на границе этого рабочего листа.

Итак, Range.End не является тривиальной функцией.

  1. .row возвращает индекс строки этой ячейки.

Ответ №1[A1].End(xlUp) [A1].End(xlDown) [A1].End(xlToLeft) [A1].End(xlToRight)

– эквивалент VBA, находящийся в ячейке A1, и нажатие клавиши Ctrl + Любая стрелка. Он будет продолжать перемещаться в этом направлении до тех пор, пока он не попадет в последнюю ячейку данных, или если вы используете эту команду для перемещения из ячейки, которая является последней ячейкой данных, она будет перемещаться, пока она не попадет в следующую ячейку, содержащую данные.

Если вы хотите найти эту последнюю “использованную” ячейку в столбце A, вы можете перейти на A65536 (например, в книгу XL93-97) и нажать Ctrl + Up для “привязки” к последней используемой ячейке. Или в VBA вы напишете:

Range(«A65536»).End(xlUp), который снова может быть переписан как Range(«A» & Rows.Count).End(xlUp) по причинам совместимости в книгах с различным количеством строк.

Ответ №2

Первая часть:

.Cells(.Rows.Count,»A»)

Отправляет вас в нижнюю строку столбца A, о которой вы уже знали.

Функция End начинается в ячейке, а затем, в зависимости от направления, которое вы указываете, идет в этом направлении, пока не достигнет края группы ячеек, у которых есть текст. Значение, если у вас есть текст в ячейках C4: E4, и вы вводите:

Sheet1.Cells(4,»C»).End(xlToRight).Select

Программа выберет E4, самую правую ячейку с текстом в ней.

В вашем случае код выплевывает строку самой последней ячейки с текстом в ней в столбце A. Помогает ли это?

Ответ №3.Cells(.Rows.Count,»A»).End(xlUp).row

Я думаю, что первая точка в скобках не должна быть там, я имею в виду, вы должны написать ее следующим образом:

.Cells(Rows.Count,»A»).End(xlUp).row

Перед ячейками вы можете написать имя своего листа, например:

Worksheets(«sheet1»).Cells(Rows.Count, 2).End(xlUp).row

Имя рабочего листа не обязательно, если вы работаете на том же рабочем листе.

Оцените статью
Добавить комментарий