Excel как найти первую пустую строку

На чтение 4 мин. Просмотров 11.2k.

Что делает макрос: Вы часто можете столкнуться с необходимостью добавить строки или столбцы к существующему набору данных. Этот макрос позволяет автоматически найти и выбрать первую пустую строку или столбец. Он предназначен для использования в сочетании с другими макрокомандами.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Код макроса
  5. Как этот код работает
  6. Как использовать

Как макрос работает

Эти макросы используют элемент Cells и свойство Offset в качестве ключевых инструментов навигации.
Элемент Cells принадлежит объекту Range. Это дает нам чрезвычайно удобный способ выбора диапазонов с помощью кода. Для этого требуется только относительные строки и столбцы в качестве параметров. Cells(5,4) приводит к строке 5, столбцу 4 (или ячейке D5). Cells(16, 4) приводит к строке 16, столбцу 4 (или ячейке D16).
Помимо передачи жестких чисел в элемент Cells, вы также можете передавать выражения.
Cells(Rows.Count, 1) то же самое, что выбрать последнюю строку и первый столбец в таблице. В Excel 2010 переводит к ячейке A1048576.
Cells(1,Columns.Count) выбирает первую строку и последний столбец в таблице. В Excel 2010 приводит к ячейке XFD1.
Объединение оператора Cells со свойством End позволяет перейти к последней использованной строке или столбцу. Это утверждение эквивалентно переходит к ячейке A1048576 и нажав Ctrl + Shift + стрелка вверх на клавиатуре. Excel автоматически переходит к последней использованной строки в столбце A.

Cells(Rows.Count, 1).End(xlUp).Select

Переходит к ячейке XFD1 и нажав Ctrl + Shift + стрелка влево на клавиатуре. Это переводит вас к последней использованной колонке в строке 1.

Cells(1, Columns.Count).End(xlToLeft).Select

Когда вы дойдете до последней строки или столбца, вы сможете использовать свойство Offset для перемещения вниз или к следующей пустой строке или столбцу.
Свойство Offset использует индекс строки и столбца, чтобы указать изменяющуюся базовую точку.Например, оператор выбирает ячейку А2, так как индекс строки в Offset перемещения строки базовой точки на единицу:

Range("A1").Offset(1, 0).Select

Этот оператор выбирает ячейку С4, и перемещает базовую точку на три строки и два столбца:

Range("A1").Offset(3, 2).Select

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

Код макроса

Sub PervayaPustayaStroka()
'Шаг 1: Объявляем переменные
Dim LastRow As Long
'Шаг 2: Захват последнего использованного номера строки
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Шаг 3: Выбираем следующую строку вниз
Cells(LastRow, 1).Offset(1, 0).Select
End Sub

Как этот код работает

  1. Шаг 1 первый объявляет переменную Long Integer под названием LastRow — держатель номера строки последней использованной строки.
  2. На шаге 2 мы фиксируем последнюю использованную строку, начиная с самой последней строки в листе и используя свойство End, чтобы перейти к первой непустой ячейке (переход к ячейке A1048576 нажатием Ctrl + Shift + стрелка вверх на клавиатуре).
  3. На этом этапе мы используем свойство Offset для перемещения на одну строку вниз и выбираем первую пустую ячейку в столбце A.

Код макроса

Sub PerviiPustoiStolbec()
'Шаг 1: Объявляем переменные
Dim LastColumn As Long
'Шаг 2: захват последнего использованного номера столбца
LastColumn = Cells(5, Columns.Count).End(xlToLeft).Column
'шаг 3: выбираем следующий пустой столбец
Cells(5, LastColumn).Offset(0, 1).Select
End Sub

Как этот код работает

  1. Сначала мы объявляем переменную Long Integer под названием LastColumn —  держатель номера столбца последнего используемого столбца.
  2. На шаге 2 мы фиксируем последний используемый столбец, начиная с самого последнего столбца в листе и используя свойство End, чтобы перейти к первой непустой колонке
    (эквивалент перейти к ячейке XFD5, нажав Ctrl + Shift + стрелка влево на клавиатуре).
  3. На этом этапе мы используем свойство Offset для перемещения на одну колонку и выбираем первый пустой столбец в строке 5.

Как использовать

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

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

Эти макросы используют элемент Cells и свойство Offset в качестве ключевых инструментов навигации.

Элемент Cells принадлежит объекту Range. Это дает нам чрезвычайно удобный способ выбора диапазонов с помощью кода. Для этого требуется только относительные строки и столбцы в качестве параметров. Cells(5,4) приводит к строке 5, столбцу 4 (или ячейке D5). Cells(16,4) приводит к строке 16, столбцу 4 (или ячейке D16).

Помимо передачи жестких чисел в элемент Cells, вы также можете передавать выражения.

Cells(Rows.Count, 1) то же самое, что выбрать последнюю строку и первый столбец в таблице. В Excel 2010 переводит к ячейке A1048576.

Cells(1,Columns.Count) выбирает первую строку и последний столбец в таблице. В Excel 2010 приводит к ячейке XFD1.

Объединение оператора Cells со свойством End позволяет перейти к последней использованной строке или столбцу. Это утверждение эквивалентно переходут к ячейке A1048576 и нажатию Ctrl + Shift + стрелка вверх на клавиатуре. Excel автоматически переходит к последней использованной строке в столбце A.

Cells(Rows.Count, 1).End(xlUp).Select

Переходит к ячейке XFD1 и нажав Ctrl + Shift + стрелка влево на клавиатуре. Это переводит вас к последней использованной колонке в строке 1.

Cells(1, Columns.Count).End(xlToLeft).Select

Когда вы дойдете до последней строки или столбца, вы сможете использовать свойство Offset для перемещения вниз или к следующей пустой строке или столбцу.

Свойство Offset использует индекс строки и столбца, чтобы указать изменяющуюся базовую точку. Например, оператор выбирает ячейку А2, так как индекс строки в Offset перемещения строки базовой точки на единицу:

Range(“A1”).Offset(1, 0).Select

Этот оператор выбирает ячейку С4, и перемещает базовую точку на три строки и два столбца:

Range(“A1”).Offset(3, 2).Select

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

How do I find the first completely empty row on a particular worksheet looking top down?

Because the sheet includes a Totals row at the end of several empty rows, I don’t think I can simply use the Range.End property and offset by 1.

Community's user avatar

asked Feb 2, 2014 at 4:00

Ken's user avatar

5

To find the first blank row, loop through the actual UsedRange determined by Find using CountA to test for a blank row

If no row is found, use the next row after the end of the last cell determined by the Find

   Sub Method2()
   Dim rng1 As Range
   Dim rng2 As Range

   Dim bFound As Boolean

   Set rng2 = ActiveSheet.Cells.Find("*", [a1], xlFormulas, , xlByRows, xlPrevious)

   For Each rng1 In Range([a1], Cells(rng2.row, "A"))
   If Application.WorksheetFunction.CountA(Rows(rng1.row)) = 0 Then
        MsgBox rng1.row & " is the first blank row"
        bFound = True
        Exit For
   End If
   Next rng1

   If Not bFound Then MsgBox rng2.Offset(1, 0).row & " is the first blank row"

   End Sub

answered Feb 2, 2014 at 4:47

brettdj's user avatar

brettdjbrettdj

54.7k16 gold badges113 silver badges176 bronze badges

3

forgive me if I’ve misinterpreted the question.

Totals is always the last row and you’d therefore like to find the next row.
I assume that Totals changes the row it is located on and there are blank rows in front of it.

Why does the location of Totals change?

I’d just make cell where totals is located a named range “Totals”:

enter image description here

Then if some extra rows are inserted I can still get to the Totals row ok:

enter image description here

So in VBA its then trivial:

Sub Method2()

    MsgBox "Total named range is  " & ActiveSheet.Range("Totals").Address(0, 0)
    MsgBox "Next empty row is  " & ActiveSheet.Range("Totals").Row + 1

End Sub

answered Feb 2, 2014 at 8:33

whytheq's user avatar

whytheqwhytheq

34k64 gold badges170 silver badges265 bronze badges

2

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

Найдите первую пустую ячейку в столбце с формулой
Найдите первую пустую ячейку в столбце с кодом VBA


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

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

1. Выберите пустую ячейку для отображения результата.

2. Скопируйте и вставьте формулу. = МИН (ЕСЛИ (A1: A23 = “”; СТРОКА (A1: A23))) в панель формул, затем нажмите Ctrl + Shift + Enter клавиши на клавиатуре. Смотрите скриншот:

Внимание: Измените диапазон в формуле на свой собственный.

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


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

Помимо формулы, вы также можете найти первую пустую ячейку в столбце с кодом VBA. Пожалуйста, сделайте следующее.

1. Нажмите другой + A11 в то же время открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, дважды щелкните текущее имя рабочего листа на левой панели, чтобы открыть редактор кода.

3. Скопируйте и вставьте следующий код VBA в редактор.

Код VBA: найти первую пустую ячейку в столбце

Sub Findfirstblankcell()
	Dim Rng As Range
	Dim WorkRng As Range
	On Error Resume Next
	xTitleId = "KutoolsforExcel"
	Set WorkRng = Application.Selection
	Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
	For Each Rng In WorkRng
		If Rng.Value = "" Then
			MsgBox "No Value, in " & Rng.Address
		End If
	Next
End Sub

4. Нажмите Run кнопку или нажмите кнопку F5 ключ для запуска кода.

5. После запуска кода KutoolsforExcel появится диалоговое окно, выберите диапазон, в котором вы хотите найти первую пустую ячейку, затем щелкните OK кнопка. Смотрите скриншот:

Затем появляется диалоговое окно с адресом первой пустой ячейки в указанном столбце, указанном внутри.

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


Статьи по теме:

  • Как найти позицию первого / последнего числа в текстовой строке в Excel?
  • Как найти ячейки с условным форматированием / с условным форматированием в Excel?
  • Как найти ячейки с / с проверкой данных в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (2)


Оценок пока нет. Оцените первым!

Модератор:Naeel Maqsudov

tolikt

Сообщения:93
Зарегистрирован:29 окт 2005, 12:33
Откуда:NewVasюbirsk

Про нахождение первой пустой (незаполненной) ячейки на листе (в диапазоне, области) тут обсуждалось не раз. Но всё сводилось к средствам VBA для макроса, написанного пользователем.
Как получить адрес (например, номер строки) первой пустой ячейки в диапазоне (например, столбце) ТОЛЬКО с помощью СТАНДАРТНЫХ ФОРМУЛ Excel без VBA?

Genyaa

Сообщения:307
Зарегистрирован:11 окт 2006, 17:24
Откуда:Moscow
Контактная информация:

21 ноя 2007, 10:47

С помощью форумулы массива:

{=ПОИСКПОЗ(ИСТИНА();(A1:A500=””);ЛОЖЬ())}

Вернет номер строки первой пустой ячейки в области A1:A500.

(Для создание формулы массива нужно в конце редактирования формулы нажать одновременноа Ctrl+Shift+Enter, фигурные скопки вводить не нужно, сами появляются.)

Всякое решение плодит новые проблемы.

Avsha

Сообщения:664
Зарегистрирован:08 сен 2005, 13:47
Откуда:KZ

21 ноя 2007, 14:19

Или можно завести дополнительный столбец и брать от него максимальное значение,
как в этой теме…

Excel, последнея не пустая ячейка в столбце
http://forum.developing.ru/showpost.php … stcount=13

повторюсь…
Еще вариант – создать столбец, около вашей таблицы, например в столбце AA с формулами:

=ЕСЛИ(СЧИТАТЬПУСТОТЫ(A1:Z1)<ЧИСЛСТОЛБ(A1:Z1);СТРОК А(A10:Z10);0)
=ЕСЛИ(СЧИТАТЬПУСТОТЫ(A2:Z2)<ЧИСЛСТОЛБ(A2:Z2);СТРОК А(A11:Z11);0)
=ЕСЛИ(СЧИТАТЬПУСТОТЫ(A3:Z3)<ЧИСЛСТОЛБ(A3:Z3);СТРОК А(A12:Z12);0)

=ЕСЛИ(СЧИТАТЬПУСТОТЫ(A1000:Z1000)<ЧИСЛСТОЛБ(A1000: Z1000);СТРОКА(A1000:Z1000);0)

и ячейку с искомым последним номером строки
=МАКС(AA1:AA1000)

и ячейку с первой пустой строкой
=ПОИСКПОЗ(0;AA:AA;0)

Добавить комментарий