jueves, 7 de abril de 2016

VBA: Mostrar los sumandos.

Hoy veremos una UDF (función personalizada en VBA) muy simple como respuesta a la cuestión planteada de un usuario, quien pedía obtener en forma de lista los sumandos de un suma dada.

Tenemos un rango de celdas en B2:B4 y en B5 hemos realizado la suma de éstos:
=SUMA(B2:B4)
En C5 insertamos nuestras UDF:
=sumandos(B2:B4)
donde obtenemos el listado de elementos sumados.

VBA: Mostrar los sumandos.



Para resolver nuestra cuestión en particular, insertamos el siguiente código dentro de un móodulo estándar del explorador de proyectos del Editor de VB:

Function sumandos(rango) As String
'determinamos número de elementos
n = rango.Count
'recorremos todos los elementos del rango indicado
For i = 1 To n
    'unimos los distintos elementos con un separador +
    If i = 1 Then
        lista = rango.Item(i)
    Else
        lista = lista & " + " & rango.Item(i)
    End If
Next i

'devolvemos a la celda la lista de elementos
sumandos = lista

End Function






Una variante sería recuperar la lista a partir de una celda con fórmula:

Function sumandos(CeldaFx) As String
Dim funcion As String, Fx As String
'verificamos la celda seleecionada tenga fórmula
If CeldaFx.HasFormula Then
    'recuperamos los rangos de trabajo...
    funcion = CeldaFx.Formula
    Fx = Mid(funcion, InStr(1, funcion, "(") + 1, Len(funcion) - InStr(1, funcion, "(") - 1)
    'determinamos número de elementos
    n = Range(Fx).Count
    'recorremos todos los elementos del rango indicado
    For i = 1 To n
        'unimos los distintos elementos con un separador +
        If i = 1 Then
            lista = Range(Fx).Item(i)
        Else
            lista = lista & " + " & Range(Fx).Item(i)
        End If
    Next i
    
    'devolvemos a la celda la lista de elementos
    sumandos = lista
Else
    sumandos = "Celda sin fórmula/función"
End If

End Function

No hay comentarios:

Publicar un comentario en la entrada