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.
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:
Una variante sería recuperar la lista a partir de una celda con fórmula:
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.
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
Nota: solo los miembros de este blog pueden publicar comentarios.