Buscar valor en varias hojas de excel y traerlos a una celda de una hoja indicada

Tengo una función que busca valores en función del valor de una celda de un listado.

Los valores los busca en todas las hojas generadas, que dependiendo del archivo varían en número.

La macro con la que busco estos valores en todas las hojas del libro es la que sigue:

Function VLOOKAllSheets(Look_Value As Variant, Tble_Array As Range, _
Col_num As Integer, Optional Range_look As Boolean) As Double

Application. Volatile
Dim wSheet As Worksheet
Dim vFound
On Error Resume Next
For Each wSheet In ActiveWorkbook.Worksheets
With wSheet
Set Tble_Array = .Range(Tble_Array.Address)
vFound = WorksheetFunction.VLookup _
(Look_Value, Tble_Array, _
Col_num, Range_look)
End With
If Not IsEmpty(vFound) Then Exit For
Next wSheet
Set Tble_Array = Nothing
VLOOKAllSheets = vFound
End Function

Esta función me busca el primer valor que encuentra de entre todas las hojas, y lo que quisiera es que me buscara todos los valores(un mismo dato puede aparecer en distintas hojas), y me sume los valores de la celda encontrada.

1 Respuesta

Respuesta
1

Puedes enviarme un archivo con ejemplos para corregir la macro y hacer pruebas.

¿El mismo dato puede aparecer también varias veces en la misma hoja?

Si solamente hay un valor en la hoja, prueba con esta macro:

Function VLOOKAllSheets(Look_Value As Variant, Tble_Array As Range, _
Col_num As Integer, Optional Range_look As Boolean) As Double
Application. Volatile
Dim wSheet As Worksheet
Dim vFound
On Error Resume Next
For Each wSheet In ActiveWorkbook.Worksheets
    With wSheet
        Set Tble_Array = .Range(Tble_Array.Address)
        vFound = WorksheetFunction.VLookup _
        (Look_Value, Tble_Array, _
        Col_num, Range_look)
    End With
    If Not IsEmpty(vFound) Then tot = tot + vFound
Next wSheet
Set Tble_Array = Nothing
VLOOKAllSheets = tot
End Function

Saludos.Dante Amor
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas