Последний столбец в excel макрос

We use  Range.SpecialCells() method in the below VBA Code to find and return details of last used row, column, and cell in a worksheet.

Sample Data:

Sample Data

Syntax:

expression.SpecialCells (Type, Value)

Eg: To return the last used cell address in an activesheet. ActiveSheet.Range(“A1”).SpecialCells(xlCellTypeLastCell).Address

VBA Code:

Declaring Variables:

Variable Data Type Comments
LastRow Long Find and store last used row
LastCol Long store last used column
LastCell String store last used cell address
'Variable Declaration

Dim LastRow As Long, LastCol As Long, LastCell As String

Use SpecialCells function to find last used row/column/cell 

'Find Last Used Row
LastRow = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row

'Find Last Used Column
LastCol = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Column

'Find Last Used Cell
LastCell = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Address

Concatenate all three variables (LastRow/LastCol/LastCell), add a new line between variables use Chr(10).   Show the final output in an Excel Message box.

'Display the last used row/column/cell

MsgBox "Last Used Row : " & LastRow & Chr(10) & "Last Used Column : " & LastCol & Chr(10) & "Last Used Cell : " & LastCell

Implementation:

Follow the below steps to find the Last Used Row and Last Used Column in Excel VBA

Step 1: Add a shape (Find Last Row/Column/Cell) on your worksheet.  

Step 2: Right-click on “Find Last Row/Column/Cell” and “Assign Macro..”

Step 3: Select “findLastUsedCell”, you can see a list of macros if available in your workbook

Step 4: Save your excel file as “Excel Macro-Enabled Workbook” *.xlsm

Step 5: Click “Find Last Row/Column/Cell” to execute the VBA code.  Code will popup below output for the above given example (Output).

Output:

AndreA SN

1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

1

Последний столбец и последняя строка на листе

09.05.2014, 21:59. Показов 51911. Ответов 2

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Конструкция ниже определяет на текущем листе последнюю строку, заполненную данными

Visual Basic
1
lastRow = Cells(Rows.Count, "B").End(xlUp).Row

Как таким же образом определить последний столбец с данными на листе?

Добавлено через 10 минут
нашел

Visual Basic
1
Cells(1, 1).End(xlToRight).Column



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.05.2014, 21:59

2

Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

09.05.2014, 23:11

2

Лучший ответ Сообщение было отмечено AndreA SN как решение

Решение

Цитата
Сообщение от AndreA SN
Посмотреть сообщение

нашел

Это если столбцов больше одного и нет пропусков.
Решение, аналогичное последней строке:

Visual Basic
1
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column



2



0 / 0 / 0

Регистрация: 08.05.2013

Сообщений: 23

14.01.2021, 17:30

3

нужно добавить, что такой подсчет используемых столбцов идет по

первой

строке



0



I am trying to create an excel macro which finds the last column of a sheet and then selects the entire column. However, this column will always be different- some days it will be column ‘H’, other days will be column ‘GX’ as the data in the sheet is constantly updated. So far I have seen how you can find the last column and then delete it, but it specifically refers to that certain column once the macro runs again. I need it to always refer to the last column, no matter what column that may be. Thanks!

Here is the code. I am new to VBA, etc. and this was created through the macro recorder and other things I found online so bear with me!

`Sub Macro11()
Sheets("Sheet25").Cells(1, 1).Activate
ActiveCell.SpecialCells(xlLastCell).Select
lastCol = ActiveCell.Column
Columns("W:W").Select
Selection.Delete Shift:=xlToLeft
End Sub`

pnuts's user avatar

pnuts

58k11 gold badges85 silver badges137 bronze badges

asked Jul 18, 2013 at 17:51

Joe Gay's user avatar

5

Here is the sample code
Avoid using Select /Activate in your code. To know why refer this link

Sub Macro11()
    Dim LastCol As Long

    With ThisWorkbook.Sheets("Sheet25")
        LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        .Columns(LastCol).Delete
    End With

End Sub

Community's user avatar

answered Jul 18, 2013 at 18:19

Santosh's user avatar

SantoshSantosh

12.1k4 gold badges41 silver badges72 bronze badges

1

На чтение 10 мин. Просмотров 47.7k.

Итог: узнаете, как найти последнюю строку, столбец или ячейку в таблице с использованием трех различных методов на VBA. Используемый метод зависит от макета данных и от того, содержит ли лист пустые ячейки.

Уровень мастерства: средний

3 способа найти последнюю заполненную ячейку VBA

Видео: 3 части серии как найти последнюю ячейку с VBA

Видео лучше всего просматривать в полноэкранном режиме HD

Загрузите файл, содержащий код:

Find Last Cell VBA Примеры.xlsm (79.6 KB)

Поиск последней ячейки — все о данных

Поиск последней используемой строки, столбца или ячейки — это одна из самых распространенных задач при написании макросов и приложений VBA. Как и все в Excel и VBA, есть много различных способов.

Выбор правильного метода в основном зависит от того, как выглядят ваши данные.

В этой статье я объясняю три различных метода VBA объекта Range, которые мы можем использовать для поиска последней ячейки на листе. Каждый из этих методов имеет плюсы и минусы, а некоторые выглядят страшнее других. 🙂

Но понимание того, как работает каждый метод, поможет вам узнать, когда их использовать и почему.

#1 – The Range.End() Method

Range.End() очень похож на сочетание клавиш Ctrl+Arrow. В VBA можно использовать этот метод, чтобы найти последнюю не пустую ячейку в одной строке или столбце.

Диапазон.Пример кода End VBA

Sub Последняя_ячейка()
'Найти последнюю не пустую ячейку в одной строке или столбце

Dim lRow As Long
Dim lCol As Long
    
    'Найти последнюю не пустую ячейку в столбце А(1)
    lRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    'Найти последнюю непустую ячейку в строке 1
    lCol = Cells(1, Columns.Count).End(xlToLeft).Column
    
    MsgBox "Последняя строка: " & lRow & vbNewLine & _
            "Последний столбец: " & lCol
  
End Sub

Чтобы найти последнюю использованную строку в столбце, этот
метод начинается с последней ячейки столбца и идет вверх (xlUp), пока не найдет
первую непустую ячейку.

Оператор Rows.Count возвращает количество всех строк на рабочем листе. Поэтому мы в основном указываем последнюю ячейку в столбце A листа (ячейка A1048567) и поднимаемся до тех пор, пока не найдем первую непустую ячейку.

Это работает так же с поиском последнего столбца. Он начинается с последнего столбца в строке, затем идет влево, пока в столбце не будет найдена последняя непустая ячейка. Columns.Count возвращает общее количество столбцов на листе. Итак, мы начинаем с последнего столбца и идем налево.

Аргумент для метода End указывает, в каком направлении идти.
Возможные варианты: xlDown, xlUp, xlToLeft, xlToRight.

Плюсы Range.End

  • Range.End прост в использовании и понимании, так как он работает так же, как сочетания клавиш Ctrl+Arrow.
  • Может использоваться для поиска первой пустой ячейки или последней непустой ячейки в одной строке или столбце.

Минусы Range.End

  • Range.End работает только с одной строкой или столбцом. При наличии диапазона данных, содержащего пробелы в последней строке или столбце, может быть трудно определить, в какой строке или столбце выполнять метод.
  • Если вы хотите найти последнюю используемую ячейку, то вы должны оценить по крайней мере два оператора. Один, чтобы найти последнюю строку и один, чтобы найти последний столбец. Затем их можно объединить для ссылки на последнюю ячейку.

Вот справочные статьи для Range.End

  • Страница справки MSDN для Range.End
  • Справка MSDN для перечислений xlDirection

#2 – The Range.Find() Method

Последнее значение в столбце Excel

Метод Range.Find — я предпочитаю этот способ, чтобы найти последнюю строку, столбец или ячейку. Он самый универсальный, но и самый страшный.

Последнее значение в столбце Excel

У Range.Find много аргументов, но пусть это вас не пугает. Когда вы знаете, что они делают, вы можете использовать Range.Find для многих вещей в VBA.

Range.Find — это в основном способ программирования меню «Find» в Excel. Он делает то же самое, и большинство аргументов Range.Find являются опциями в меню Find.

Последнее значение в столбце Excel

Пример кода Range.Find

Ниже
приведен код для поиска последней непустой строки.            

Sub Последняя_ячейка_Find()
'Находит последнюю непустую ячейку на листе / диапазоне.

Dim lRow As Long
Dim lCol As Long
    
    lRow = Cells.Find(What:="*", _
                    After:=Range("A1"), _
                    LookAt:=xlPart, _
                    LookIn:=xlFormulas, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlPrevious, _
                    MatchCase:=False).Row
    
    MsgBox "Последняя строка: " & lRow

End Sub

Метод Range.Find. Пояснения

Метод Find ищет первую непустую ячейку («*»). Звездочка представляет
собой символ подстановки, который ищет любой текст или числа в ячейке.

Начиная с ячейки A1, он перемещается назад (xlPrevious) и
фактически начинает поиск в самой последней ячейке на листе. Затем он
перемещается справа налево (xlByRows) и проходит по каждой строке, пока не
найдет непустую ячейку. При обнаружении непустого он останавливается и
возвращает номер строки.

Range.Find VBA Excel

Вот подробное объяснение каждого аргумента.

  • What:=”*” — звездочка — это символ подстановки, который находит любой текст или число в ячейке. Это в основном то же самое, что и поиск непустой ячейки.
  • After:=Range(“A1”)— начать поиск после ячейки А1, первой ячейки на листе. Это означает, что A1 не будет искать. Поиск начнется после A1, и следующая ячейка, которую он ищет, зависит от SearchOrder и SearchDirection. Этот аргумент можно изменить, чтобы он начинался в другой ячейке, просто помните, что поиск фактически начинается в ячейке после указанной.
  • LookAt: = xlPart — это будет смотреть на любую часть текста внутри ячейки. Другой вариант — xlWhole, который будет пытаться соответствовать всему содержимому ячейки.
  • LookIn: = xlFormulas — Это заставляет Find искать в формулах, и это важный аргумент. Другой вариант — xlValues, который будет искать только значения. Если у вас есть формулы, которые возвращают пробелы (= IF (A2> 5, «Ok», «»), то вы можете считать это непустой ячейкой. При указании LookIn в качестве xlFormulas эта формула будет считаться непустой, даже если возвращаемое значение пустое.
  • SearchOrder: = xlByRows — это говорит Find, чтобы искать через каждую целую строку прежде, чем перейти к следующей. Направление поиска слева направо или справа налево зависит от аргумента SearchDirection. Другой вариант здесь — xlByColumns, который используется при поиске последнего столбца.
  • SearchDirection: = xlPrevious — указывает направление поиска. xlPrevious означает, что он будет искать справа налево или снизу вверх. Другой вариант — xlNext, который перемещается в противоположном направлении.
  • MatchCase: = False — это говорит Find, чтобы не рассматривать заглавные или строчные буквы. Если установить значение True, это поможет. Этот аргумент не является необходимым для этого сценария.

Да, я знаю, что это много, но надеюсь, у вас будет лучшее понимание того, как использовать эти аргументы, чтобы найти что-нибудь на листе.

Плюсы
Range.Find

  • Find ищет во всем диапазоне последнюю непустую строку или столбец. Он НЕ ограничен одной строкой или столбцом.
  • Последняя строка в наборе данных может содержать пробелы, и Range.Find все равно найдет последнюю строку.
  • Аргументы могут использоваться для поиска в разных направлениях и для определенных значений, а не только пустых ячеек.

Минусы Range.Find

  • Это ужасно. Метод содержит 9 аргументов. Хотя требуется только один из этих аргументов (Что), вы должны привыкнуть использовать хотя бы первые 7 аргументов. В противном случае метод Range.Find по умолчанию будет использовать ваши последние использованные настройки в окне поиска. Это важно. Если вы не укажете необязательные аргументы для LookAt, LookIn и SearchOrder, тогда метод Find будет использовать те параметры, которые вы использовали последними в окне поиска Excel.
  • Нахождение последней ячейки требует двух утверждений. Один, чтобы найти последний ряд и один, чтобы найти последний столбец. Затем вы должны объединить их, чтобы найти последнюю ячейку.

Macro Recorder выручит!

Range.Find — все еще мой любимый метод для нахождения последней ячейки из-за ее универсальности. Но нужно много напечатать и запомнить. К счастью, вам это не нужно.

Вы можете использовать макро рекордер, чтобы быстро создать код со всеми аргументами.

  1. Запустить макро рекордер
  2. Нажмите Ctrl + F
  3. Затем нажмите кнопку «Найти далее»

Код для метода Find со всеми аргументами будет сгенерирован устройством записи макросов.

Используйте пользовательскую функцию для метода Find

Вы также можете использовать пользовательскую функцию (UDF) для метода поиска. Последняя функция Ron de Bruin — прекрасный пример. Вы можете скопировать эту функцию в любой проект или модуль кода VBA и использовать ее для возврата последней строки, столбца или ячейки.

У меня также есть аналогичная функция в примере рабочей книги. Моя функция просто имеет дополнительные аргументы для ссылки на лист и диапазон для поиска.

Вот справочные статьи для Range.Find

  • MSDN Help Article for Range.Find Method

#3 – Range.SpecialCells (xlCellTypeLastCell)

Метод SpecialCells делает то же самое, что и нажатие сочетания клавиш Ctrl + End, и выбирает последнюю использованную ячейку на листе.

Пример кода SpecialCells (xlCellTypeLastCell)

Sub Range_SpecialCells_Method()

    MsgBox Range("A1").SpecialCells(xlCellTypeLastCell).Address
      
End Sub

На самом деле это самый простой способ найти последнюю использованную ячейку. Однако этот метод находит последнюю использованную ячейку, которая может отличаться от последней непустой ячейки.

Часто вы будете нажимать Ctrl + End на клавиатуре и попадете в какую-нибудь ячейку вниз в конце листа, который определенно не используется. Это может произойти по ряду причин. Одной из распространенных причин является то, что свойства форматирования для этой ячейки были изменены. Простое изменение размера шрифта или цвета заливки ячейки помечает ее как использованную ячейку.

Плюсы Range.SpecialCells

  • Вы можете использовать этот метод, чтобы найти «используемые» строки и столбцы в конце листа и удалить их. Сравнение результата Range.SpecialCells с результатом Range.Find для непробелов может позволить вам быстро определить, существуют ли какие-либо неиспользуемые строки или столбцы на листе.
  • Удаление неиспользуемых строк / столбцов может уменьшить размер файла и увеличить полосу прокрутки.

Минусы Range.SpecialCells

  • Excel только сбрасывает последнюю ячейку при сохранении книги. Поэтому, если пользователь или макрос удаляет содержимое некоторых ячеек, этот метод не найдет истинную последнюю ячейку, пока файл не будет сохранен.
  • Он находит последнюю использованную ячейку, а НЕ последнюю непустую ячейку.

Другие методы поиска последней ячейки

Что ж, это должно охватывать основы поиска последней
использованной или непустой ячейки на листе. Если ваш лист содержит объекты
(таблицы, диаграммы, сводные таблицы, слайсеры и т. Д.), Вам может
потребоваться использовать другие методы для поиска последней ячейки. Я объясню
эти методы в отдельном посте.

У меня также есть статья о том, как найти ПЕРВУЮ ячейку в листе.

Пожалуйста, оставьте комментарий ниже, если у вас есть какие-либо вопросы, или вы все еще не можете найти последнюю ячейку. Я буду рад помочь!

Содержание

  1. excel-vba Методы поиска последней использованной строки или столбца на листе
  2. замечания
  3. Найдите последнюю непустую ячейку в столбце
  4. Найти последнюю строку с использованием именованного диапазона
  5. Получить строку последней ячейки в диапазоне
  6. Найти последнюю непустую колонку в рабочем листе
  7. Последняя ячейка в Range.CurrentRegion
  8. Найти последнюю непустую строку в рабочем листе
  9. Найти последнюю непустую ячейку в строке
  10. Найти последнюю непустую ячейку в рабочем листе — Производительность (массив)
  11. Последнее значение в столбце Excel
  12. Видео: 3 части серии как найти последнюю ячейку с VBA
  13. Поиск последней ячейки — все о данных

excel-vba
Методы поиска последней использованной строки или столбца на листе

замечания

Вы можете найти хорошее объяснение того, почему другие методы не поощряются / неточны: http://stackoverflow.com/a/11169920/4628637

Найдите последнюю непустую ячейку в столбце

В этом примере мы рассмотрим метод возврата последней непустой строки в столбец для набора данных.

Этот метод будет работать независимо от пустых областей в наборе данных.

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

Кроме того, непустые ячейки в скрытых строках не будут учитываться.

Чтобы устранить указанные выше ограничения, строка:
LastRow = wS.Cells(wS.Rows.Count, «A»).End(xlUp).Row

могут быть заменены на:

для последнего использованного ряда «Sheet1» :
LastRow = wS.UsedRange.Row — 1 + wS.UsedRange.Rows.Count .

для последней непустой ячейки столбца «A» в «Sheet1» :

Найти последнюю строку с использованием именованного диапазона

Если у вас есть Именованный диапазон в вашем листе, и вы хотите динамически получить последнюю строку этого динамического именованного диапазона. Также охватывает случаи, когда Named Range не начинается с первой строки.

Обновить:
Потенциальная лазейка была отмечена @Jeeped для aa named range с несмежными строками, поскольку она генерирует неожиданный результат. Чтобы решить эту проблему, код пересматривается, как показано ниже.
Апппции: таргеты sheet = form , named range = MyNameRange

Получить строку последней ячейки в диапазоне

Найти последнюю непустую колонку в рабочем листе

Вы можете выбрать один из двух вариантов, если хотите узнать, нет ли данных на листе:

  • НЕТ: Используйте LastCol_1: вы можете использовать его непосредственно в wS.Cells(. LastCol_1(wS))
  • ДА: Использовать LastCol_0: вам нужно проверить, если результат, полученный вами от функции, равен 0 или нет, прежде чем использовать его

Свойства объекта Err автоматически сбрасываются до нуля после выхода функции.

Последняя ячейка в Range.CurrentRegion

Range.CurrentRegion — прямоугольная область диапазона, окруженная пустыми ячейками. Пустые ячейки с такими формулами, как =»» или ‘ , не считаются пустыми (даже ISBLANK Excel).

Найти последнюю непустую строку в рабочем листе

Вы можете выбрать один из двух вариантов, если хотите узнать, нет ли данных на листе:

  • НЕТ: Используйте LastRow_1: вы можете использовать его непосредственно в wS.Cells(LastRow_1(wS). )
  • YES: Использовать LastRow_0: вам нужно проверить, есть ли результат, полученный вами от функции, 0 или нет, прежде чем использовать его

Найти последнюю непустую ячейку в строке

В этом примере мы рассмотрим метод возврата последнего непустого столбца в строке.

Этот метод будет работать независимо от пустых областей в наборе данных.

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

Кроме того, непустые ячейки в скрытых столбцах не будут учитываться.

Найти последнюю непустую ячейку в рабочем листе — Производительность (массив)

  • Первая функция, использующая массив, намного быстрее
  • Если .ThisWorkbook.ActiveSheet без необязательного параметра, по умолчанию будет .ThisWorkbook.ActiveSheet
  • Если диапазон пуст, он будет возвращать Cell( 1, 1 ) по умолчанию вместо Nothing

GetMaxCell (Array): Duration: 0.0000790063 seconds
GetMaxCell (Find ): Duration: 0.0002903480 seconds

Источник

Последнее значение в столбце Excel

Итог: узнаете, как найти последнюю строку, столбец или ячейку в таблице с использованием трех различных методов на VBA. Используемый метод зависит от макета данных и от того, содержит ли лист пустые ячейки.

Уровень мастерства: средний

Видео: 3 части серии как найти последнюю ячейку с VBA

Видео лучше всего просматривать в полноэкранном режиме HD

Загрузите файл, содержащий код:

Find Last Cell VBA Примеры.xlsm (79.6 KB)

Поиск последней ячейки — все о данных

Поиск последней используемой строки, столбца или ячейки — это одна из самых распространенных задач при написании макросов и приложений VBA. Как и все в Excel и VBA, есть много различных способов.

Выбор правильного метода в основном зависит от того, как выглядят ваши данные.

В этой статье я объясняю три различных метода VBA объекта Range, которые мы можем использовать для поиска последней ячейки на листе. Каждый из этих методов имеет плюсы и минусы, а некоторые выглядят страшнее других. 🙂

Но понимание того, как работает каждый метод, поможет вам узнать, когда их использовать и почему.

#1 – The Range.End() Method

Range.End() очень похож на сочетание клавиш Ctrl+Arrow. В VBA можно использовать этот метод, чтобы найти последнюю не пустую ячейку в одной строке или столбце.

Диапазон.Пример кода End VBA

Чтобы найти последнюю использованную строку в столбце, этот метод начинается с последней ячейки столбца и идет вверх (xlUp), пока не найдет первую непустую ячейку.

Оператор Rows.Count возвращает количество всех строк на рабочем листе. Поэтому мы в основном указываем последнюю ячейку в столбце A листа (ячейка A1048567) и поднимаемся до тех пор, пока не найдем первую непустую ячейку.

Это работает так же с поиском последнего столбца. Он начинается с последнего столбца в строке, затем идет влево, пока в столбце не будет найдена последняя непустая ячейка. Columns.Count возвращает общее количество столбцов на листе. Итак, мы начинаем с последнего столбца и идем налево.

Аргумент для метода End указывает, в каком направлении идти. Возможные варианты: xlDown, xlUp, xlToLeft, xlToRight.

Плюсы Range.End

  • Range.End прост в использовании и понимании, так как он работает так же, как сочетания клавиш Ctrl+Arrow.
  • Может использоваться для поиска первой пустой ячейки или последней непустой ячейки в одной строке или столбце.

Минусы Range.End

  • Range.End работает только с одной строкой или столбцом. При наличии диапазона данных, содержащего пробелы в последней строке или столбце, может быть трудно определить, в какой строке или столбце выполнять метод.
  • Если вы хотите найти последнюю используемую ячейку, то вы должны оценить по крайней мере два оператора. Один, чтобы найти последнюю строку и один, чтобы найти последний столбец. Затем их можно объединить для ссылки на последнюю ячейку.

Вот справочные статьи для Range.End

#2 – The Range.Find() Method

Метод Range.Find — я предпочитаю этот способ, чтобы найти последнюю строку, столбец или ячейку. Он самый универсальный, но и самый страшный.

У Range.Find много аргументов, но пусть это вас не пугает. Когда вы знаете, что они делают, вы можете использовать Range.Find для многих вещей в VBA.

Range.Find — это в основном способ программирования меню «Find» в Excel. Он делает то же самое, и большинство аргументов Range.Find являются опциями в меню Find.

Пример кода Range.Find

Ниже приведен код для поиска последней непустой строки.

Метод Range.Find. Пояснения

Метод Find ищет первую непустую ячейку («*»). Звездочка представляет собой символ подстановки, который ищет любой текст или числа в ячейке.

Начиная с ячейки A1, он перемещается назад (xlPrevious) и фактически начинает поиск в самой последней ячейке на листе. Затем он перемещается справа налево (xlByRows) и проходит по каждой строке, пока не найдет непустую ячейку. При обнаружении непустого он останавливается и возвращает номер строки.

Вот подробное объяснение каждого аргумента.

  • What:=”*” — звездочка — это символ подстановки, который находит любой текст или число в ячейке. Это в основном то же самое, что и поиск непустой ячейки.
  • After:=Range(“A1”)— начать поиск после ячейки А1, первой ячейки на листе. Это означает, что A1 не будет искать. Поиск начнется после A1, и следующая ячейка, которую он ищет, зависит от SearchOrder и SearchDirection. Этот аргумент можно изменить, чтобы он начинался в другой ячейке, просто помните, что поиск фактически начинается в ячейке после указанной.
  • LookAt: = xlPart — это будет смотреть на любую часть текста внутри ячейки. Другой вариант — xlWhole, который будет пытаться соответствовать всему содержимому ячейки.
  • LookIn: = xlFormulas — Это заставляет Find искать в формулах, и это важный аргумент. Другой вариант — xlValues, который будет искать только значения. Если у вас есть формулы, которые возвращают пробелы (= IF (A2> 5, «Ok», «»), то вы можете считать это непустой ячейкой. При указании LookIn в качестве xlFormulas эта формула будет считаться непустой, даже если возвращаемое значение пустое.
  • SearchOrder: = xlByRows — это говорит Find, чтобы искать через каждую целую строку прежде, чем перейти к следующей. Направление поиска слева направо или справа налево зависит от аргумента SearchDirection. Другой вариант здесь — xlByColumns, который используется при поиске последнего столбца.
  • SearchDirection: = xlPrevious — указывает направление поиска. xlPrevious означает, что он будет искать справа налево или снизу вверх. Другой вариант — xlNext, который перемещается в противоположном направлении.
  • MatchCase: = False — это говорит Find, чтобы не рассматривать заглавные или строчные буквы. Если установить значение True, это поможет. Этот аргумент не является необходимым для этого сценария.

Да, я знаю, что это много, но надеюсь, у вас будет лучшее понимание того, как использовать эти аргументы, чтобы найти что-нибудь на листе.

Плюсы Range.Find

  • Find ищет во всем диапазоне последнюю непустую строку или столбец. Он НЕ ограничен одной строкой или столбцом.
  • Последняя строка в наборе данных может содержать пробелы, и Range.Find все равно найдет последнюю строку.
  • Аргументы могут использоваться для поиска в разных направлениях и для определенных значений, а не только пустых ячеек.

Минусы Range.Find

  • Это ужасно. Метод содержит 9 аргументов. Хотя требуется только один из этих аргументов (Что), вы должны привыкнуть использовать хотя бы первые 7 аргументов. В противном случае метод Range.Find по умолчанию будет использовать ваши последние использованные настройки в окне поиска. Это важно. Если вы не укажете необязательные аргументы для LookAt, LookIn и SearchOrder, тогда метод Find будет использовать те параметры, которые вы использовали последними в окне поиска Excel.
  • Нахождение последней ячейки требует двух утверждений. Один, чтобы найти последний ряд и один, чтобы найти последний столбец. Затем вы должны объединить их, чтобы найти последнюю ячейку.

Macro Recorder выручит!

Range.Find — все еще мой любимый метод для нахождения последней ячейки из-за ее универсальности. Но нужно много напечатать и запомнить. К счастью, вам это не нужно.

Вы можете использовать макро рекордер, чтобы быстро создать код со всеми аргументами.

  1. Запустить макро рекордер
  2. Нажмите Ctrl + F
  3. Затем нажмите кнопку «Найти далее»

Код для метода Find со всеми аргументами будет сгенерирован устройством записи макросов.

Используйте пользовательскую функцию для метода Find

Вы также можете использовать пользовательскую функцию (UDF) для метода поиска. Последняя функция Ron de Bruin — прекрасный пример. Вы можете скопировать эту функцию в любой проект или модуль кода VBA и использовать ее для возврата последней строки, столбца или ячейки.

У меня также есть аналогичная функция в примере рабочей книги. Моя функция просто имеет дополнительные аргументы для ссылки на лист и диапазон для поиска.

Вот справочные статьи для Range.Find

  • MSDN Help Article for Range.Find Method

#3 – Range.SpecialCells (xlCellTypeLastCell)

Метод SpecialCells делает то же самое, что и нажатие сочетания клавиш Ctrl + End, и выбирает последнюю использованную ячейку на листе.

Пример кода SpecialCells (xlCellTypeLastCell)

На самом деле это самый простой способ найти последнюю использованную ячейку. Однако этот метод находит последнюю использованную ячейку, которая может отличаться от последней непустой ячейки.

Часто вы будете нажимать Ctrl + End на клавиатуре и попадете в какую-нибудь ячейку вниз в конце листа, который определенно не используется. Это может произойти по ряду причин. Одной из распространенных причин является то, что свойства форматирования для этой ячейки были изменены. Простое изменение размера шрифта или цвета заливки ячейки помечает ее как использованную ячейку.

Плюсы Range.SpecialCells

  • Вы можете использовать этот метод, чтобы найти «используемые» строки и столбцы в конце листа и удалить их. Сравнение результата Range.SpecialCells с результатом Range.Find для непробелов может позволить вам быстро определить, существуют ли какие-либо неиспользуемые строки или столбцы на листе.
  • Удаление неиспользуемых строк / столбцов может уменьшить размер файла и увеличить полосу прокрутки.

Минусы Range.SpecialCells

  • Excel только сбрасывает последнюю ячейку при сохранении книги. Поэтому, если пользователь или макрос удаляет содержимое некоторых ячеек, этот метод не найдет истинную последнюю ячейку, пока файл не будет сохранен.
  • Он находит последнюю использованную ячейку, а НЕ последнюю непустую ячейку.

Другие методы поиска последней ячейки

Что ж, это должно охватывать основы поиска последней использованной или непустой ячейки на листе. Если ваш лист содержит объекты (таблицы, диаграммы, сводные таблицы, слайсеры и т. Д.), Вам может потребоваться использовать другие методы для поиска последней ячейки. Я объясню эти методы в отдельном посте.

У меня также есть статья о том, как найти ПЕРВУЮ ячейку в листе.

Пожалуйста, оставьте комментарий ниже, если у вас есть какие-либо вопросы, или вы все еще не можете найти последнюю ячейку. Я буду рад помочь!

Источник

Понравилась статья? Поделить с друзьями:
  • Последняя непустая ячейка в столбце excel
  • Последний несохраненный файл word
  • Последняя непустая ячеек в excel
  • Последний лист книги excel
  • Последняя не пустая ячейка столбца excel