Адрес последнего столбца в таблице 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:

Узнать последнюю строку можно следующими примерами:

1.

Код 1C v 8.х

 Сообщить(appExcel.WorkSheets(1).UsedRange.Row); 

2. метод определяет, когда закончились данные на листе:

SpecialCells(11) — «последняя» ячейка

Например, если нужен номер строки последней ячейки,

Код 1C v 8.х

 LastRow=ExcelApp.Cells(1,1).SpecialCells(11).Row; 

Для проверки нажмите в проверяемом файле ctrl+end. Посмотрите на какой строке остановится курсор.

Узнать последнюю колонку можно следующими примерами:

1.

Код 1C v 8.х

 Сообщить(appExcel.WorkSheets(1).UsedRange.Columns); 

2.

Код 1C v 8.х

 LastCol=ExcelApp.Cells(1,1).SpecialCells(11).Columns; 

Информация взята с сайта http://helpf.pro

Подпишитесь на нашу рассылку новостей

Хотите узнать больше по этому вопросу?

Подпишитесь на нашу рассылку новостей

Подписаться

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

Предложить статью

Return the number of columns in a given array or reference

How to Get Excel Last Value in Column

The COLUMNS Function[1] in Excel is an Excel Lookup/Reference function. It is useful for looking up and providing the number of columns in a given reference or array. The COLUMNS function, after specifying an Excel range, will return the number of columns that are contained within that range.

Formula

=COLUMNS(array)

The COLUMNS function in Excel includes only one argument – array. The array argument is a required argument. It is the reference to a range of cells or an array or array formula for which we want the number of columns. The function returns a numerical value.

How to use the COLUMNS Function in Excel?

It is a built-in function that can be used as a worksheet function in Excel. To understand the uses of this function, let’s consider a few examples:

Example 1

Let’s see how this function works when we provide the following references:

COLUMNS Function

Suppose we wish to find out the number of columns in a range. The most basic formula used is = COLUMNS(rng).

In the first reference above, we used the COLUMNS function to get the number of columns from range A6:F6. We got the result as 6 as shown in the screenshot below:

COLUMNS Function - Example 1

So, this function counted the number of columns and returned a numerical value as the result.

When we gave the cell reference B6, it returned the result of 1, as only one reference was given.

COLUMNS Function - Example 1a

Lastly, when we provided the formula F1:F9, it counted the number of columns as 1 and the function returned the result accordingly.

Thus, in this function, “array” can be an array, an array formula, or a reference to a single contiguous group of cells.

COLUMNS Function – Example 2

Using Columns with other formulas: If we wish to get the address of the first cell in a named range, we can use the ADDRESS function together with the ROW and COLUMN functions. The formula to be used is below:

COLUMNS Function - Example 2

What happens in this formula is that the ADDRESS function builds an address based on a row and column number. Then, we use the ROW function to generate a list of row numbers, which are then shifted by adding ROWS(B5:D5)-1, so that the first item in the array is the last row number:

ROW(B5:D5)+ROWS(B5:D5)-1

We do the same for COLUMN and COLUMNS: COLUMN(B5:D5)+COLUMNS(B5:D5)-1

What happens is that the ADDRESS function now collects and returns an array of addresses. If we enter the formula in a single cell, we just get the item from the array, which is the address corresponding to the last cell in a range.

COLUMNS Function – Example 3

Now let’s see how to find out the last column in a range. The data given is as follows:

COLUMNS Function - Example 3a

The formula used is =MIN(COLUMN(A3:C5))+COLUMNS(A3:C5)-1

Using the formula above, we can get the last column that is in a range with a formula based on the COLUMN function.

When we give a single cell as a reference, the COLUMN function will return the column number for that particular reference. However, when we give a range that contains multiple columns, the COLUMN function will return an array that contains all column numbers for the given range.

If we wish to get only the first column number, we can use the MIN function to extract just the first column number, which will be the lowest number in the array.

Once we get the first column, we can just add the total columns in the range and subtract 1, to get the last column number.

The result is shown below:

COLUMNS Function - Example 3b

For a very large number of ranges, we can use the INDEX function instead of the MIN function. The formula would be:

=COLUMN(INDEX(range,1,1))+COLUMNS(range)-1

Click here to download the sample Excel file

Additional Resources

Thanks for reading CFI’s guide to important Excel functions! By taking the time to learn and master these functions, you’ll significantly speed up your financial analysis. To learn more, check out these additional CFI resources:

  • Excel Functions for Finance
  • Advanced Excel Formulas Course
  • Advanced Excel Formulas You Must Know
  • Excel Shortcuts for PC and Mac
  • See all Excel resources

Article Sources

  1. COLUMNS Function

На чтение 3 мин. Просмотров 13 Опубликовано 20.05.2021

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

Найдите последнюю строку или столбец с данными с помощью кода VBA
Найдите и выберите последнюю строку или столбец с данными с помощью Kutools for Excel


Содержание

  1. Найти последнюю строку или столбец с данными с помощью кода VBA
  2. Найти и выберите последнюю строку или столбец с данными с помощью Kutools for Excel
  3. Найдите и выберите последнюю строку или столбец с данными с помощью Kutools for Excel

Найти последнюю строку или столбец с данными с помощью кода VBA

Большинство из нас может подумать о том, чтобы найти последнюю ячейку, нажав Ctrl + End клавиши, чтобы найти последнюю строку и столбец, но сочетание клавиш не найдет ячейку с точным значением, если некоторые ячейки имеют форматирование ниже диапазона данных. Итак, используйте следующий код VBA:

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

2 . Удерживая нажатыми клавиши ALT + F11 , откройте окно Microsoft Visual Basic для приложений .

3 . Затем нажмите Insert > Module и вставьте следующий код в окно модуля .

Код VBA: найти последнюю строку с данными

4 . Затем нажмите клавишу F5 , чтобы запустить этот код, и появится окно подсказки, в котором будет указан номер строки используемого диапазона. См. Снимок экрана:

5 . Продолжайте нажимать кнопку OK , на этот раз номер последней строки со значениями был показан, как показано на следующем снимке экрана:

Примечание. Чтобы найти последний столбец с данными, примените этот код:

Код VBA: найти последний столбец с данными


Найти и выберите последнюю строку или столбец с данными с помощью Kutools for Excel

Если вы хотите напрямую найти и выбрать последнюю строку или столбец с данными в Excel, Выбрать последний Строка и утилиты Выбрать последний столбец из Kutools of Excel могут вам помочь. Пожалуйста, сделайте следующее.

Перед применением Kutools for Excel , пожалуйста, сначала загрузите и установите его .

1. Если вы хотите найти и выбрать последнюю строку с данными, нажмите Kutools > Выбрать > Выбрать последнюю ячейку > Последняя строка . См. Снимок экрана:

Примечание : для поиска и выбора последнего столбца с данными нажмите Kutools > Выберите > Выбрать последнюю ячейку > Последний столбец .

Затем последняя строка или столбец с данными на текущем листе найдена и немедленно выбрана.

Если вы хотите получить 30-дневную бесплатную пробную версию этой утилиты, пожалуйста щелкните, чтобы загрузить его , а затем перейдите к применению операции в соответствии с указанными выше шагами.


Найдите и выберите последнюю строку или столбец с данными с помощью Kutools for Excel



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

Итог: узнаете, как найти последнюю строку, столбец или ячейку в таблице с использованием трех различных методов на 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 только сбрасывает последнюю ячейку при сохранении книги. Поэтому, если пользователь или макрос удаляет содержимое некоторых ячеек, этот метод не найдет истинную последнюю ячейку, пока файл не будет сохранен.
  • Он находит последнюю использованную ячейку, а НЕ последнюю непустую ячейку.

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

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

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

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

Понравилась статья? Поделить с друзьями:
  • Адрес на русском excel
  • Автоширина ячеек в excel
  • Адрес листа vba excel
  • Автоформатирование таблицы в excel это как
  • Адрес как заполнить excel