Como utilizar la WorksheetFunction SumIf





En este post WorksheetFunction funciones de Excel en VBA se dijo que WorksheetFunction tiene por objeto ejecutar casi todas las funciones que trae incorporadas Excel, es decir se puede agregar en una macro y echar manos a estas funciones, luego se expuso un listado de todas las funciones de Excel que se pueden ejecutar desde una macro de VBA, en el ejemplo que se presenta en el post actual te voy a mostrar como se usa la función o WorksheetFunction SumIf o SumarSi, en WorksheetFunction SumIfs o SumarSi.Conjunto encontrarás como se usa esta función que tiene como diferencia que se pueden utilizar varios criterios de suma a la vez; en Funciones de Excel, descripción y traducción al inglés y otros idiomas, encontrarás listadas y con una breve explicación sobre que realiza cada una de las funciones de Excel; en Función Si se presenta un tutorial sobre el uso de esta función en Excel.

SumIf permite sumar las celdas de un rango que cumplen un criterio especificado la sintaxis es la siguiente:

WorksheetFunction.SumIf(Arg1,Arg2,Arg3)

El significado de los parámetros son:

Arg1, es un dato obligatorio, siendo el rango de celdas que se deben evaluar según los criterios especificados.

Arg2, es un dato también obligatorio, se refiere a los criterios en forma de número, expresión o texto, que determinan las celdas que se deben sumar, los criterios se pueden expresar como 12, "12", "<12" o "palmeras". En los criterios se pueden usar caracteres comodín (?) y (*); donde el "?" corresponde a un solo caracter y el "*" a una cadena de caracteres, si lo que se desea buscar es (?) o (*) se debe escribir un tilde (~) antes del caracter.

Arg3, es un dato opcional, representa las celdas que se deben sumar si se cumple los criterios de las celdas correspondientes del rango del Arg1, si se omite el dato, las celdas del Arg1 se evaluarán según los criterios datos y se sumarán si se cumplen los mismos.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

Específicamente en el ejemplo, que podrás descargar desde el link del final, se suma el rango de la columna A, que es determinado automáticamente, evalúa la columna B, si el dato de la celda es ">2000" entonces suma la celda correspondiente de la columna A, la suma es colocada al final de la columna A.

Para sumar el código necesario es Application.WorksheetFunction.SumIf(Range("B2" & ":B" & uf - 1), "> 2000", Range("A2" & ":A" & uf - 1)) el Argumento 1 "Range("B2" & ":B" & uf - 1)" es el rango que se debe evaluar, luego se debe determinar el criterio  "> 2000"; por último se coloca el rango que se desea sumar si se cumple el criterio, "Range("A2" & ":A" & uf - 1)".

Se debe notar que el rango se arma en forma automática con "Range("B2" & ":B" & uf)", se utiliza el método Range concatenando la columna y la última fila con datos, lo mismo se hace con el rango que se debe sumar.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.





Código que se inserta en un userform





Sub SumIf()
Application.ScreenUpdating = False
'On Error Resume Next
DisplayAlerts = False
Dim uf As String
uf = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
Cells(uf + 1, "A") = Application.WorksheetFunction.SumIf(Range("B2" & ":B" & uf - 1), "> 2000", Range("A2" & ":A" & uf - 1))
DisplayAlerts = True
Application.ScreenUpdating = True
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends