Excel - Como buscar datos en diferentes hojas de excel de un mismo archivo

 
Vista:
sin imagen de perfil
Val: 18
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Marta Blanco Rodríguez (8 intervenciones) el 25/03/2019 17:14:10
Hola, buenas tardes.

Me gustaría saber si alguien me puede ayudar ya que tengo un problema a la hora de ejecutar una MACRO.

La idea principal es buscar unos determinados datos (en este caso, longitudes) en diferentes hojas de EXCEL (hoja1, hoja2, hoja3...).

Los datos se encuentran en las dos primeras columnas de cada hoja.

He conseguido hacer el siguiente MACRO tomando como ejemplo algunos que encontré por Internet:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub BuscarEnVariasHojas()
Dim Celda As Range, Rango As Range
Dim CeldaAux As Range, RangoAux As Range
Dim Hoja As Worksheet
 
Set Rango = Hoja1.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
 
For Each Hoja In ActiveWorkbook.Worksheets
    If Hoja.Name <> "Buscar" Then
        Hoja.Activate
        For Each Celda In Rango
 
            If Celda.Offset(0, 1) <> Empty And Celda.Offset(0, 2) <> Empty Then GoTo FinDeBusqueda
 
            Set RangoAux = Hoja.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
            For Each CeldaAux In RangoAux
                If Celda = CeldaAux Then
                    Celda.Offset(0, 1) = CeldaAux.Offset(0, 1)
                    Celda.Offset(0, 2) = "fila" & CeldaAux.Row & "hoja" & Hoja.Name
                    GoTo FinDeBusqueda
                End If
            Next CeldaAux
FinDeBusqueda
        Next Celda
    End If
Next Hoja
 
Hoja1.Activate
 
End Sub

Al ejecutar la MACRO me salen los valores SOLO de la primera hoja y me gustaría que, cuando encuentra el primer valor en la primera hoja, saltará al segundo valor y lo buscará en la segunda hoja, cuando lo encuentre, que pase al tercer valor y busque en la tercera hoja y así sucesivamente... Pensé que con el comando GoTo FinDeBusqueda lo conseguiría pero sigue sin salirme.

Muchas gracias de antemano, si me pueden ayudar sería genial ya que es un problema que me urge bastante.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.150
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Antoni Masana (1459 intervenciones) el 25/03/2019 19:39:58
Hay varias cosas que están mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub BuscarEnVariasHojas()
    Dim Celda As Range, Rango As Range
    Dim CeldaAux As Range, RangoAux As Range
    Dim Hoja As Worksheet
 
    Set Rango = Hoja1.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
 
    For Each Hoja In ActiveWorkbook.Worksheets
        If Hoja.Name <> "Buscar" Then
            Hoja.Activate
            For Each Celda In Rango
 
                 ' ---&--- Los GOTO prohibido solo se deben usar cuando no hay otra solución
 
                 If Celda.Offset(0, 1) <> Empty And _
                    Celda.Offset(0, 2) <> Empty Then GoTo FinDeBusqueda
 
                Set RangoAux = Hoja.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
                For Each CeldaAux In RangoAux
                    If Celda = CeldaAux Then
                       Celda.Offset(0, 1) = CeldaAux.Offset(0, 1)
                       Celda.Offset(0, 2) = "fila" & CeldaAux.Row & "hoja" & Hoja.Name
 
                       GoTo FinDeBusqueda  ' <== Esto es un ERROR GARRAFAL (Muy grave)
                                           '     Salir de un FOR con un GOTO
                                           '     Esto puede ser causa de errores inespedaros
                    End If
                Next CeldaAux
FinDeBusqueda:
            Next Celda
        End If
    Next Hoja
 
    Hoja1.Activate
End Sub

En la línea 6 haces referencia a la Hoja1 ¿Cual es? ¿Es "Buscar"? Mejor haces esto:

1
2
3
4
5
6
Sub BuscarEnVariasHojas()
    ...
    Set Rango = Sheets("Buscar").Range(Cells(2, 1), Cells(2, 1).End(xlDown))
    ...
    Sheets("Buscar").Activate
End Sub

Como no entiendo muy bien que quieres hacer y que haces.
Para entenderlo un poco mejor seria necesario ver el libro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 18
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Marta (8 intervenciones) el 25/03/2019 21:11:51
Muchas gracias por las correcciones. He intentado ejecutar la MACRO y sigue sin salir lo que yo deseo.

Lo que yo quiero hacer es que, metiendo una serie de longitudes en la hoja "Buscar" en la columna A (representada con una X) me busque a lo largo de las diferentes hojas su valor correspondiente a la reducción (representado en la columna B por Y).
En las diferentes hojas del libro (Longitud1, Longitud2...) se tienen en la columna A, valores de longitud y en la columna B valores de reducción (que son los que yo deseo buscar y conocer).

El problema es que, yo quiero que cada valor de longitud que yo meto en la hoja "Buscar" en la columna A, se asocie con una hoja diferente, es decir, el primer valor (en este caso 8700) se asocie con la hoja Longitud 1 y me de la reducción correspondiente a dicha longitud, después que el segundo valor (en este caso 8400) se asocie con la hoja Longitud2 y así sucesivamente...

El problema que tengo es que las longitudes me las está buscando todas en la misma hoja y no en cada una de ellas como yo quiero.

Espero haberme explicado bien y que pueda ayudarme.

Un saludo.




Graficaslongitud1
Graficaslongitud
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.150
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Antoni Masana (1459 intervenciones) el 25/03/2019 21:54:03
Si adjuntas el libro sera más fácil ayudarte.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Marta (8 intervenciones) el 25/03/2019 22:16:00
Aquí lo tienes.

Espero que te sirva. Muchas gracias.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.150
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Antoni Masana (1459 intervenciones) el 26/03/2019 13:34:36
Esto es lo que necesitas.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Buscar_En_Varias_Hojas()
    Dim Fila_Orig As Integer, Celda As Long, _
        CeldaAux As Range, RangoAux As Range, Hoja As Worksheet
 
    Fila_Orig = 2
    For Each Hoja In ActiveWorkbook.Worksheets
        If Hoja.Name <> "Buscar" Then
            Hoja.Activate
            Celda = Sheets("Buscar").Cells(Fila_Orig, "A")
 
            Set RangoAux = Hoja.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
            For Each CeldaAux In RangoAux
                If Celda = CeldaAux Then
                   Sheets("Buscar").Cells(Fila_Orig, "B") = CeldaAux.OffSet(0, 1)
                   Sheets("Buscar").Cells(Fila_Orig, "C") = "fila: " & Format(CeldaAux.Row, "###") & " - hoja: " & Hoja.Name
                   Exit For
                End If
            Next
            Fila_Orig = Fila_Orig + 1
        End If
    Next Hoja
    Sheets("Buscar").Activate
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Marta (8 intervenciones) el 26/03/2019 17:23:51
Muchísimas gracias por la ayuda recibida. Me funciona perfectamente.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 18
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Como buscar datos en diferentes hojas de excel de un mismo archivo

Publicado por Marta (8 intervenciones) el 27/03/2019 16:44:44
Perdona Antoni, a ver si me puedes ayudar nuevamente. Como podría hacer para recorrer todas las hojas de mi archivo (longitud1, longitud2, longitud3) y que me extraiga el valor de la última fila de cada una de ellas, es decir, que me tome el valor de X y de Y y que me lo copie en la primera hoja (Buscar) en la columna A (las X) y en la columna B (las Y).

Muchas gracias.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar