Para ello haremos uso del método FINDNEXT.
Opción 1:
Partiremos de una tabla de varias columnas donde una de ellas será la del primer criterio (mes) y otra contendrá datos del segundo criterio (art.). La tarea será calcular el acumulado de registros que coincidan en MES y ART.
Si bien esto puede ser resuelto con un filtro y la función Subtotales, vamos a ver cómo sería la programación en VBA utilizando los métodos FIND para encontrar el primer elemento y FINDNEXT para continuar la búsqueda hasta cubrir toda la tabla.
Sub busquedaRepetidos()
'busca el valor de F1 en todas las apariciones en hoja activa
dato = Range("F1")
'se inicia la búsqueda en col A de la hoja activa
Set busco = Range("A:A").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
'si no se encuentra ninguna coincidencia se notifica y finaliza el proceso
If busco Is Nothing Then MsgBox "Dato no encontrado": Exit Sub
'guarda la 1er fila encontrada
filx = busco.Row
'inicia un bucle
Do
'compara la col B con criterio en G1
If busco.Offset(0, 1) = [G1] Then
totx = totx + busco.Offset(0, 2)
End If
'repite la búsqueda
Set busco = Range("A:A").FindNext(busco)
Loop While Not busco Is Nothing And busco.Row <> filx
'terminó la búsqueda. Se coloca el acumulado en H1
[H1] = totx
End Sub
Opción 2:
También podríamos utilizar método FINDNEXT para obtener el acumulado de todo enero, sin uso del segundo criterio. Lo único que se quitaría en este caso es la comparación con la celda G1.
La macro en la parte del bucle DO....LOOP WHILE nos quedará del siguiente modo:
'inicia un bucle
Do
totx = totx + busco.Offset(0, 2)
'repite la búsqueda
Set busco = Range("A:A").FindNext(busco)
Loop While Not busco Is Nothing And busco.Row <> filx
Descargar libro de ejemplo desde aquí.
Acceso al VIDEO N° 23
Ver más macros con bucles en nuevo manual Bucles en Excel.
excelente aportación, gracias
ResponderBorrarGracias por comentarlo. Sdos!
Borrar