Hace unos días me preguntaba un amigo como era la función SUMAR.SI en VBA. Esta función, que es super usada en Excel no existe en VBA como tal. ¿Pero cómo que no existe?. La respuesta es sencilla, en VBA podemos emular casi cualquier función de manera sencilla pero customizándola a nuestras necesidades.
Lo que necesitamos crear un VBA es un pequeño código que nos permita hacer un sumar si en VBA, esto es, una suma con condiciones… una o varias.
Pero esto se entenderá mejor con un ejemplo…
EJEMPLO
Supongamos que tenemos un rango de valores en una tabla de Excel desde la fila 2 hasta la fila 100 en la columna A y parejo, en la columna B tenemos una condición que es OK o KO. Es decir, cada valor numérico lleva aparejado un OK o un KO. Nuestro objetivo será sumar todos los valores que estén aparejados con un KO.
El siguiente código contiene un bucle FOR que recorre todo el rango desde arriba hasta abajo, un variable que se llama resultado en la que guardaremos el resultado de la suma condiciona y un IF que verifica la condición.
[codesyntax lang=”vb” lines=”no” container=”div” blockstate=”expanded” doclinks=”0″]
Sub Contar_Condicional() 'inicializo la variable resultado RESULTADO = 0 'comienzo el bucle For i = 2 To 100 If Cells(i, 2) = "OK" Then 'criterio qeu debe cumplir 'sumo sólo los valores que cumplen el criterio 'y voy sumando acumuladamente a lo anterior. RESULTADO = RESULTADO + Cells(i, 1) End If Next MsgBox RESULTADO End Sub
[/codesyntax]
Al crear el código podríamos añadir tantas condiciones con IF anidado o con AND (ver más) como quisiéramos. Esto nos permitiría ampliar nuestra función SUMAR.SI en VBA a SUMAR.SI.CONJUNTO. Es decir, es lo mismo que hacer el sumar si en VBA que acabamos de ver pero con un mayor número de condiciones.
En realidad también podríamos haber usado la función SUMAR.SI de Excel mediante la llamada:
Application.WorksheetFunction.Sumif
Pero no merece la pena puesto que es mucho más rígida que crear nuestro propio código.
En el siguiente enlace puedes ver un ejemplo con la macro en cuestión: Ejemplo SUMAR SI VBA