Macro contar datos de diferentes hojas

Hola espero puedan ayudarme.
Tengo un archivo con 20 hojas que pueden tener cuatro tipos de datos (por ejemplo: Melones, Peras, Manzanas, Uvas) separadas por numero de "caso" es decir Melones1, Melones2, Melones3, etc. Y estos pueden tener 4 condicionantes distintas (por ejemplo: Verdes, Maduras, Dañadas, arruinadas).
Lo que necesito es contar por cada caso cuantas veces se cumple la condicionante buscándola en todo el libro y me lo muestre en una hoja resumen en una columna y ademas que en la columna adyacente me indique en que hoja esta.
Los casos están agrupados en "cajas" (tabla del mismo tamaño en cada hoja) y cada "caja" solo puede contener datos que cumplan solo una condicionante. Es decir en la caja 1 puedo tener melones del 1 al 10 dañados, en la caja 2 melones del 1 al 10 maduros, etc.
Si no me explique bien me dicen para hacerles un ejemplo.
Gracias de antemano.

1 respuesta

Respuesta
1
No me ha quedado del todo claro como tienes ordenados los datos, pero por lo que dices el número de hojas y el tamaño de las tablas de cada hoja están acotados.
Una buena solución es hacer una macro que recorra todas las celdas de todas las páginas y haga el conteo. Para ello declaras una variable para cada condición que quieras contar, y las inicias a 0:
melones_verdes = 0
melones_maduros= 0
melones_dañados= 0
peras_verdes= 0
...
Una vez has declarado todas las variables que necesites recorres las tablas con un bucle doble.
For i = i To 200        'Para las hojas
    For j = 1 To 30     'Para las tablas de cada hoja
        'Análisis de las celdas
    Next
Next
Con este bucle doble i indica el número de hoja y j el número de fila dentro de cada tabla. Con esto podrás recorrer todas las filas que quieres analizar. Donde pone análisis de celdas puedes hacer un select...case o if...else como el siguiente.
If Worksheets(i).Cells(1, j) = "Melones" Then
    If Worksheets(i).Cells(2, j) = "verdes" Then
        melones_ verdes = melones_verdes + 1
    ElseIf Worksheets(i).Cells(2, j) = "maduros" Then
        melones_maduros = melones_maduros + 1
    [...]
ElseIf Worksheets(i).Cells(1, j) = "Peras" Then
[...]
End If
Al final tendrás todas las variables declaradas al inicio con el valor de cada elemento, y con esto puedes mostrar un mensaje, o escribirlos en una celda etc.
Si tienes alguna duda más concreta, o no entiendes algún punto intenta explicar un poco más claro como es tu excel.

Añade tu respuesta

Haz clic para o