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

Исходные данные для этой статьи состоят из случайных чисел.

ArrowMain

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

Мы создали специальную функцию «DynaSum» для вычисления суммы значений во всех ячейках.

ArrowOutput

Пользовательская функция «DynaSum» вычисляет сумму значений всех последовательных ячеек. Эта функция будет суммировать все значения, пока не встретится пустая ячейка.

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

ArrowSecondOutput

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

Set Rng = Application.Caller Приведенный выше код используется для назначения ячейки, содержащей пользовательскую функцию, в качестве объекта Range.

Пожалуйста, введите код ниже

Option Explicit

Function DynaSum(Optional Rng As Range)

'Declaring variables

Dim Total As Double

Dim LngRow As Long

Dim LngCol As Integer

'Refresh function when value in worksheet is changed

Application.Volatile

'Assigning range if Range is not specified in the function

If Rng Is Nothing Then

Set Rng = Application.Caller

End If

'Getting the column and row number

LngCol = Rng.Column

LngRow = Rng.Row - 1

'Looping through all the cells in the column until blank cell is encountered

Do Until IsEmpty(Cells(LngRow, LngCol))

Total = Total + Cells(LngRow, LngCol)

LngRow = LngRow - 1

If LngRow = 1 Then Exit Do

Loop

'Getting output

DynaSum = Total

End Function

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]