Ícono del sitio Formulas Excel

Macro para suma condicional en múltiples hojas Excel

Síguenos y dale Like:
20k
7400
1k

Ahora veremos como se puede aplicar una macro para realizar una suma condicional con información contenida en múltiples hojas, esto es, con un solo clic poder obtener un total en base a una condición y datos que se encuentran en diferentes hojas, esta macro es de gran ayuda en formatos contables que requieren procesar muchos datos contenidos en varias hojas.

Particularmente no me gusta separar datos del mismo tipo o de la misma naturaleza en distintas hojas, prefiero poner todo en una sola hoja como base de datos, de ese modo es mas sencillo trabajar después con esos datos, pero si tu prefieres separar por ejemplo, las ventas mensuales, una hoja para cada mes o incluso una hoja para cada día, entonces este ejemplo te sera de enorme ayuda.

Link de descarga al final del post

Para poder hacer ese consolidado o suma de algún dato en particular, sera necesario recorrer las hojas del libro que contienen la informacion necesaria para ese caso, no importa si son 10 o 100 hojas, la idea es que se haga de una manera rápida y automatizada, con un solo clic.

Cabe precisar que la estructura de todas esas hojas que contienen la informacion deberán tener la misma estructura, es decir, que tengan las mismas columnas de datos en el mismo orden.

Obtener el total de ventas de un vendedor en particular

La idea en este ejemplo es poder obtener el total de ventas que un vendedor en particular ha realizado, para ello sera necesario simplemente indicar el nombre del vendedor y al presionar en un botón deberá recorrerse  todas las hojas del libro ( excepto la que contendrá la suma ), buscar el nombre de ese vendedor en la columna que corresponda y sumar el importe de la venta de cada registro donde aparece.

En la primera hoja del libro se realizara dicha suma, para ello usaremos una celda donde vamos a poner en nombre del vendedor, en la celda de a lado deberá aparecer la suma al momento de presionar en un botón.

La celda donde se pone el nombre del vendedor tiene una lista desplegable que esta ligada a una hoja donde esta la lista de todos los vendedores, de ese modo se podrá seleccionar el nombre de esa lista.

Este libro contiene múltiples hojas, la macro deberá recorrer a partir de la tercera hoja, las dos primeras no porque la primera es donde se realizara la suma y la segunda es la que contiene la lista de vendedores.

Macro para recorrer las hojas y hacer la suma condicional

La siguiente macro es la que recorre las hojas y realizara la suma de las ventas del vendedor seleccionado en la primera hoja.

Option Explicit

Sub SumaDato()
    Dim i, j As Integer
    Dim filas As Integer
    Dim Vendedor As String
    Dim Suma As Double

    Vendedor = range("nombre")
    Suma = 0

    For i = 3 To Worksheets.Count
        filas = Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row
        For j = 2 To filas
            If Worksheets(i).Cells(j, 3) = Vendedor Then
                Suma = Suma + Worksheets(i).Cells(j, 5).Value
            End If
        Next j
    Next i
    range("total").Value = Suma

End Sub

Explicando la macro que recorre las hojas y hace la suma

Dim i, j As Integer
Dim filas As Integer
Dim Vendedor As String
Dim Suma As Double

En esa parte se definen las variables que usaremos en el proceso

Vendedor = range("nombre")

A la variable vendedor le asignamos el dato que ponemos en la celda del nombre del vendedor en la primera hoja, a esa celda le ponemos un nombre de rango, en este caso “nombre”.

Suma = 0

Aquí se inicia la variable suma en cero.

Vamos a recorrer las hojas con un ciclo for.

For i = 3 To Worksheets.Count

i es el contador, en este caso el contador inicia en 3 porque es el numero de la hoja donde iniciaremos, recordar que las dos primeras no se recorren, con Worksheets.Count obtenemos en numero de hojas que tiene el libro, así que con ese código le estamos diciendo que recorreremos desde 3 hasta n numero de hojas.

filas = Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row

Con ese código obtenemos el numero de la ultima fila con datos en la hoja que en ese momento se esta procesando.

For j = 2 To filas

Con este código le decimos que vamos a recorrer las filas de esa hoja a partir de la numero dos, hasta la ultima fila con datos.

If Worksheets(i).Cells(j, 3) = Vendedor Then
    Suma = Suma + Worksheets(i).Cells(j, 5).Value
End If

Este código es el que hace la comparación del nombre de empleado que se pone en la primera hoja, mismo que esta referenciado con la variable “Vendedor” contra el nombre del vendedor que se encuentra en la fila que en ese momento esta recorriendo la macro, si es igual entonces sumara la cantidad que esta en la columna que contiene el importe de la venta realizada, si no es igual continuara con el bucle para ir a la siguiente fila.

Una vez que termina de recorrer todas las hojas, se pone el valor de la variable suma en la celda donde va el total de la primera hoja del libro, justo a lado del nombre del vendedor seleccionado.

range("total").Value = Suma

Como hemos visto, esta macro es muy corta, pero a la vez muy eficiente y poderosa, espero que les sea de mucha ayuda, estaré atento a sus comentarios.

A continuación les dejo el vídeo con la explicación para una mejor comprensión del ejercicio.

Descargar suma condicional en múltiples hojas

Síguenos y dale Like:
20k
7400
1k
Salir de la versión móvil