Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como utilizar WorksheetFunction SumIfs o Sumar Si Conjunto


.

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 post como se usa la función o WorksheetFunction SumIf o SumarSi se expuso un ejemplo sobre como utilizar dicha función en una macro, ahora voy a mostrar como se utiliza la función SumIfs o SumarSi.Conjunto, la diferencia entre las SumIf y SumIfs o SumarSi y SumarSi.Conjunto, radica en que, con la primer función se pueden utilizar varios criterios, hasta 30; en cambio con la última función solo sirve para un solo criterio 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.

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.

  

La función SumIfs permite sumar las celdas de un rango que cumplen uno o varios criterios especificados, permitiendo la función sumar utilizando un máximo de 30 criterios; la sintaxis es la siguiente:

WorksheetFunction.SumIfs(Arg1, Arg2, Crit2, Arg3, Crit3, Arg4, Crit4,………, Arg30, Crit30)

El significado de los parámetros son:

Arg1, es un dato obligatorio, representa el rango que se desea sumar.

Arg2 a Arg30, dato obligatorio que indica el rango que se debe analizar o evaluar, recordemos que se pueden usar hasta treinta argumentos o rangos.

Crit2 a Crit30, también es un dato obligatorio y establece cual es el criterio o 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.

El ejemplo de macro de VBA que se presenta, tiene como fin enseñar como se usa la WorksheetFunction SumIfs o Sumar Si Conjunto; en este ejemplo se deben evaluar dos criterios a la vez para determinar que celdas sumar; en primer lugar establece cual es la última fila con datos, en esa fila y columna A se va a colocar el resultado; luego en la macro se coloca el código que va a determinar que celdas sumar y cuales no y que es el siguiente: Application.WorksheetFunction.SumIfs(Range(«A2» & «:A» & uf – 1), Range(«B2» & «:B» & uf – 1), «> 0», Range(«C2» & «:C» & uf – 1), «> 0»); como vemos en la codificación del ejemplo, el valor determinado es ingresado en la celda determinada por la columna A y la última fila con datos determinada mediante la variable «uf».

Analizando la función veremos que Range(«A2» & «:A» & uf – 1), es el rango que se desea sumar; luego Range(«B2» & «:B» & uf – 1), es el primer criterio de búsqueda; luego se agrega el primer criterio que se va a usar para evaluar el rango del primer criterio, «> 0»; posteriormente se establece el segundo rango a analizar, Range(«C2» & «:C» & uf – 1) y seguidamente el segundo criterio del ejemplo, recordemos que se pueden ingresar hasta 30 criterios, en este caso también se debe evaluar que sea mayo a cero, «> 0».

Posteriormente aparece un Msgbox, si quieres aprender sobre como crear msgbox click en el link; en el Msgbox se establece que aparezca un mensaje avisando a cuanto asciende la suma según los criterios datos, con el detalle que aparece con un formato numérico con separador de miles, es decir «626.004,75».

El ejemplo de macro que utiliza WorksheetFunction SumIfs se puede descargar desde el link del final de este post, una vez descargado el ejemplo se presiona el botón que dice «Macro» y se ejecuta la suma con las dos condiciones señaladas anteriormente, si se desea seguir probando la macro basta con modificar los datos y se la macro calculará nuevamente la suma condicional.

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.





if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}





Código que se inserta en un userform

Sub SumIfs()
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, «A») = Application.WorksheetFunction.SumIfs(Range(«A2» & «:A» & uf – 1), Range(«B2» & «:B» & uf – 1), «> 0», Range(«C2» & «:C» & uf – 1), «> 0»)
Cells(uf, «A»).NumberFormat = «#,##0.00»
MsgBox («Las ventas suman » & Format(Cells(uf, «A»), «#,##0.00»)), vbInformation, «AVISO»
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