KutoolsforOffice — Одно решение — пять мощных инструментов.Меньше усилий — больше результата.

Как автоматически пронумеровать строки в Excel, если соседняя ячейка не пуста?

АвторСяоянДата изменения
автоматическая нумерация строк, если соседняя ячейка не пуста

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

Автоматическая нумерация строк, если соседняя ячейка не пуста, с помощью формулы

Автоматическая нумерация строк, если соседняя ячейка не пуста, с помощью кода VBA


синяя стрелка вправо с пузырёмАвтоматическая нумерация строк, если соседняя ячейка не пуста, с помощью формулы

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

1. Выберите ячейку, с которой должна начинаться нумерация (например,)A2, если ваши данные начинаются с B2). Введите следующую формулу:

=IF(B2<,>,"",COUNTA($B$2:B2),"")
Совет: Эта формула проверяет, не является ли ячейка B2пустой. Если в ячейке B2есть данные, она подсчитывает все непустые ячейки от B2до текущей строки, создавая непрерывную последовательность для строк, содержащих значения. Если ячейка B2пуста, формула возвращает пустое значение, оставляя ячейку последовательности незаполненной.

2. Затем перетащите маркер заполнения вниз по столбцу — формула автоматически применится ко всем строкам. Нумерация будет корректироваться сама, отображая номера только в тех строках, где в столбце B есть данные.

автоматическая нумерация при непустой ячейке с использованием формулы

Примечание: Этот метод особенно полезен для списков, в которые новые данные могут вноситься, удаляться или изменяться в любое время, поскольку последовательность всегда остаётся точной без необходимости ручной перенумерации или пересчёта. Однако учтите, что если пустые ячейки являются частью ваших данных (например, намеренные пропуски), такие строки останутся без номеров.

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


синяя стрелка вправо с пузырёмАвтоматическая нумерация строк, если соседняя ячейка не пуста, с помощью кода VBA

Для опытных пользователей или в ситуациях, когда вы не хотите использовать формулы на всём листе — либо вам нужна нумерация, которая автоматически обновляется даже при вставке данных, удалении блоков или частых изменениях структуры, — макрос VBA становится мощной альтернативой. С его помощью вы можете автоматически обновлять количество строк в указанном столбце каждый раз при редактировании соседней ячейки, без применения формул. Это идеальное решение для форм ввода данных, журналов импорта или списков задач с постоянно меняющейся структурой.

1. Нажмите Alt + F11, чтобы открыть окно редактора Visual Basic for Applications. В проводнике проектов найдите свою книгу и дважды щёлкните нужный лист (например, «Лист1») в разделе «Microsoft Excel Objects».

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

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim chk As Range
    Set chk = Intersect(Target, Me.Columns("B"))
    If chk Is Nothing Then Exit Sub
    
    Application.EnableEvents = False
    Call RenumberNonBlank(Me, "B", "A", 2)
    Application.EnableEvents = True
End Sub
Sub RenumberNonBlank(ws As Worksheet, _
                    keyCol As String, _
                    numCol As String, _
                    firstDataRow As Long)
    Dim lastRow As Long
    Dim r As Long
    Dim seq As Long
    lastRow = ws.Cells(ws.Rows.Count, keyCol).End(xlUp).Row
    seq = 1
    For r = firstDataRow To lastRow
        With ws
            If Trim(.Cells(r, keyCol).Value) <> "" Then
                .Cells(r, numCol).Value = seq
                seq = seq + 1
            Else
                .Cells(r, numCol).ClearContents
            End If
        End With
    Next r
End Sub

3. Сохраните и закройте редактор VBA. Теперь при добавлении, редактировании или очистке данных в столбце B столбец A будет автоматически перенумерован, отражая наличие (или отсутствие) записей. Нумерация будет сдвигаться вверх или вниз при добавлении или удалении строк в столбце B.

Примечания и меры предосторожности: Этот макрос необходимо размещать именно в окне кода нужного листа (а не в общем модуле или ThisWorkbook), чтобы он корректно реагировал на изменения ячеек. Кроме того, убедитесь, что макросы включены в настройках Excel — иначе код работать не будет. Если ваши столбцы «Диапазон данных» перемещены из столбцов A и B в другие, обновите соответствующие ссылки в строках Set chk = Intersect(Target, Me.Columns("B")) и Call RenumberNonBlank(Me, "B", "A", 2).

Устранение неполадок: Если нумерация не обновляется, дважды проверьте, что вы редактируете нужный лист и что код размещен в соответствующем окне кода этого листа. Также убедитесь, что книга сохранена как файл с поддержкой макросов (.xlsm). В случае неожиданных ошибок еще раз убедитесь, что вы не изменили структуру листа — например, не объединили ячейки или не добавили данные в строки заголовков.


Лучшие инструменты повышения продуктивности в Office

🤖KUTOOLS AI Помощник: Преобразуйте Анализ данных с помощью:Интеллектуального выполнения   |  Генерации кода|  Создания пользовательские формулы  |  Анализа данных и построения диаграмм|  Вызова Расширенные функции
Популярные функции:Поиск, выделение или Отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячеек без потери данных   |  Округление без использования формул
Супер ПОИСК:VLookup по нескольким критериям  |  VLookup по нескольким значениям  |   VLookup по нескольким листам   |   Распознавание нечетких соответствий
Расширенный раскрывающийся список:Быстрое создание выпадающего списка   |  Зависимый выпадающий список   |  Выпадающий список с множественным выбором
Управление столбцами:Добавление заданного количества столбцов|Перемещение столбцов|Переключение видимости скрытых столбцов|Сравнение диапазонов и столбцов
Избранные функции:Сетка фокусировки   |  Просмотр дизайна   |Улучшенная строка формулы   | Управление рабочими книгами и листами   |  Библиотека ресурсов(автотекст)|  Выбор даты   |  Объединить листы  |  Шифрование/Расшифровать ячейки   | Отправка писем по списку   |  Супер фильтр   |   Специальный фильтр(Фильтр ячеек с жирным шрифтом/курсив/зачёркивание…) …
Лучшие наборы инструментов 15:12 Текстовыеинструменты(Добавить текст,Удалить определенные символы, …)|   50+Типыдиаграмм(Диаграмма Ганта, …)|   40+ Практические формулы(Рассчитать возраст на основе даты рождения, …)|   19 Инструментывставки(Вставить QR-код,Вставка изображения по пути, …)|   12 Инструментыпреобразования(Преобразовать в слова,Конвертация валют, …)|   7 Объединить и разделитьИнструменты(Расширенное объединение строк,Разделить ячейки, …)|… и многое другое
Используйте Kutools на предпочитаемом языке — поддержка английского, испанского, немецкого, французского, китайского и ещё 40+ языков!

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


Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу

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

Все надстройки Kutools — один установщик

Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.

ExcelWordOutlookTabsPowerPoint
  • Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
  • Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
  • Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
  • 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек