Найти в Дзене

📌 Примеры пользовательских функций VBA Excel для нумерации строк по заданному условию

Оглавление

Всем привет 👋.

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

Примеры пользовательских функций VBA Excel для нумерации строк по заданному условию
Примеры пользовательских функций VBA Excel для нумерации строк по заданному условию

📢 В конце этой статьи вы можете загрузить файл с исходным кодом 🔽

-3

▶️ Нумерация по порядку в заданных пределах

Цель: Нумерация увеличивается на 1, если значение 2-го аргумента отличается от предыдущего внутри группы. No первой группы =1. Группа определяется по значению 1-го аргумента:

Нумерация по порядку в заданных пределах
Нумерация по порядку в заданных пределах

Пример кода:

Функция возвращает порядковый номер строки в соответствии с условиями, указанными в вашем запросе. 
Чтобы использовать эту функцию в вашей таблице Excel, откройте редактор VBA (нажмите Alt + F11), вставьте этот код в новый модуль и сохраните изменения. 
Затем вы можете использовать эту функцию в ячейках вашей таблицы как обычную формулу.  Например: =Number(A2,B2).
Функция возвращает порядковый номер строки в соответствии с условиями, указанными в вашем запросе. Чтобы использовать эту функцию в вашей таблице Excel, откройте редактор VBA (нажмите Alt + F11), вставьте этот код в новый модуль и сохраните изменения. Затем вы можете использовать эту функцию в ячейках вашей таблицы как обычную формулу. Например: =Number(A2,B2).

🔘 Объяснение кода:

  • Объявляем переменную: Dim currentRow As Integer
  • Присваиваем переменной значение свойства Row объекта Application.Caller, которое возвращает No строки ячейки, из которой вызвана функция: currentRow = Application.Caller.Row
  • Если No текущей строки равен 1, то возвращаем 1: If currentRow = 1 Then Number = 1
  • Выполняем проверку. Иначе (Else), если:
-6

▶️ Пример 2: Нумерация уникальных значений в заданных пределах

Цель: No строки сбрасывается на 1, если значение 1-го аргумента отличается от предыдущего. Номер строки увеличивается на 1, если значение второго аргумента отличается от предыдущего внутри группы. No первой строки первой группы равен единице. Группа определяется по значению 1-го аргумента:

Нумерация уникальных значений в заданных пределах
Нумерация уникальных значений в заданных пределах

Пример кода:

Функция возвращает порядковый номер строки в соответствии с условиями, указанными в вашем запросе. 
Чтобы использовать эту функцию в вашей таблице Excel, откройте редактор VBA (нажмите Alt + F11), вставьте этот код в новый модуль и сохраните изменения. 
Затем вы можете использовать эту функцию в ячейках вашей таблицы как обычную формулу. Например: =RowNumber(A2,B2).
Функция возвращает порядковый номер строки в соответствии с условиями, указанными в вашем запросе. Чтобы использовать эту функцию в вашей таблице Excel, откройте редактор VBA (нажмите Alt + F11), вставьте этот код в новый модуль и сохраните изменения. Затем вы можете использовать эту функцию в ячейках вашей таблицы как обычную формулу. Например: =RowNumber(A2,B2).

🔘 Объяснение кода:

  • Объявляем переменную: Dim currentRow As Integer
  • Присваиваем переменной значение свойства Row объекта Application.Caller, которое возвращает No строки ячейки, из которой вызвана функция: currentRow = Application.Caller.Row
  • Проверка: Если номер текущей строки равен 1, то возвращаем 1:

If currentRow = 1 Then RowNumber = 1

  • Условие Иначе (Else), если:
-9

Сравнение результата:

-10

💬 А какие приемы нумерации в Excel знаете Вы? Пишите ответ в комментариях 🔽

🔎 Другие примеры пользовательских функций:

-11

➡️ СКАЧАТЬ ФАЙЛ

Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас