En este artículo, crearemos una función personalizada para generar el total del rango dinámico.

Los datos brutos de este artículo consisten en números aleatorios.

ArrowMain

En este ejemplo, queremos calcular la suma de valores en todas las celdas de cada columna. Cada columna tiene un número diferente de valores.

Hemos creado una función personalizada «DynaSum» para calcular la suma de valores en todas las celdas.

ArrowOutput

La función personalizada «DynaSum» calcula la suma de los valores de todas las celdas consecutivas. Esta función sumará todos los valores hasta que se encuentre una celda en blanco.

Si agregamos cualquier valor adicional por encima de los valores definidos, esos valores se agregarán automáticamente.

ArrowSecondOutput

Explicación del código

Set Rng = Application.Caller El código anterior se usa para asignar la celda que contiene la función personalizada como objeto Range.

Siga el código a continuación

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

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]