Buscar y regresar valor misma fila

Requiero un favor, una macro que me haga lo siguiente:

Tengo una carpeta con varios archivos de Excel que tienen varias hojas, debo trabajar siempre con la misma hoja que se denomina “RUTA”, en esta hoja debo recorrer la columna E desde la fila 11 en adelante y que me busque un texto ejemplo ”…. IDENTIFICAR LAS OPORTUNIDADES que OFRECE EN EL MARCO NACIONAL……” y cuando lo encuentre que me regrese unas fechas que están en la MISMA fila pero en las columnas H e I.

Me devolvería

COLUMNA 1 COLUMNA 2 COLUMNA 3 Columna 4

Valor celda c5(siempre) valor buscado(texto) Misma fila columna H misma Fila Columna I

Esto para todos los archivos.

Ahora el problema es que el texto que debo buscar no siempre es el mismo, osea de que manera lo puedo dejar variable o que se consulte en alguna otra celda o algo así.

2 Respuestas

Respuesta
1

Te anexo la macro, sigue las siguientes indicaciones:

1. Pon la macro en un archivo nuevo y pon un botón para ejecutarla.

2. En el archivo con la macro debes tener una hoja llamada "Hoja1"

3. En la "hoja1" en la celda B2 escribe el texto que quieras buscar

4. Los resultados quedarán en las columnas A, B, C y D empezando en la fila 3



Sub Buscar_Regresar_Datos()
'Por Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    texto = h1.Range("B1")
    carpeta = "C:\trabajo\"
    arch = Dir(carpeta & "*.xls*")
    fila = 3
    h1.Rows(fila & ":" & Rows.Count).ClearContents
    '
    Do While arch <> ""
        Set l2 = Workbooks.Open(carpeta & arch)
        For Each h In l2.Sheets
            If LCase(h.Name) = LCase("ruta") Then
                For i = 11 To h.Range("E" & Rows.Count).End(xlUp).Row
                    If LCase(h.Cells(i, "E").Value) Like "*" & LCase(texto) & "*" Then
                        h1.Cells(fila, "A").Value = h.Range("C5").Value
                        h1.Cells(fila, "B").Value = h.Range("E" & i).Value
                        h1.Cells(fila, "C").Value = h.Range("H" & i).Value
                        h1.Cells(fila, "D").Value = h.Range("I" & i).Value
                        fila = fila + 1
                    End If
                Next
                Exit For
            End If
        Next
        l2.Close False
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Dante excelente Muchas gracias .Si fuera lo contrario que yo diera un rango de fechas que aparecen en la columna H( Finicio) e I (Fecha Fin) y quisiera que me enviara las filas de la columna E en ese Rango que cambio.

Ejemplo Buscar entre 01/01/2018 y 31/01/2018 y fuera a la columna E y me devolviera el texto que allí aparece. No se si esto sea otra consulta . si es así me dice para evaluar

Crea una nueva pregunta y me explicas con ejemplos qué datos tienes y qué esperas de resultado.

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas