Necesito una macro de Excel de búsqueda

Hola mi estimado experto!
Nueva pregunta, lo que quiero es hacer una macro en un libro de excel donde yo le diga habré el libro "sepsa", y el libro "bancos", del libro sepsa, busca que el valor que esta en la celda d2, esta en la columna "a" del archivo bancos, si es así, copia lo que dice en la columna b, c, de, de la celda correspondiente, regresa al libro Sepsa, busca en d3, y así hasta que se terminen los datos. Claro que si el dato no esta en bancos, se tiene que seguir a la siguiente celda del libro SEPSA, espero haberme explicado bien.
Mando Saludo y mil gracias!

1 Respuesta

Respuesta
1
¿Y dónde copia los datos de la columna b, c, de?
Hola en f, g y h de sepsa
Hola olvide decir algo, los valores, algunos son exactos y otros fallan por centavos es decir en la hoja puede venir 12000 y en la otra 12000.50 o bien 13000 y 13000
Saludos y de nuevo mil gracias!
Coloca la rutina que te estoy enviando en un módulo de Visual Basic. ¿Cómo?
     * Abre el Editor de Visual Basic Alt-F11
     * En el Menú de Opciones, haz click en el Menu Insertar y luego selecciona Módulo.
     *En el módulo que aparece, copia el siguiente codigo ;
Sub Importar()
    Application.ScreenUpdating = False
    Workbooks.Open Filename:="BANCOS.xls"
    Workbooks.Open Filename:="SEPSA.xls"
    Range("D2").Select
    Do While ActiveCell <> ""
        Dato = ActiveCell
        Windows("BANCOS.xls").Activate
        Range("A1").Select
        Do While ActiveCell <> ""
            If ActiveCell = Dato Then
                Dato1 = ActiveCell.Offset(0, 1)
                Dato2 = ActiveCell.Offset(0, 2)
                Dato3 = ActiveCell.Offset(0, 3)
                Windows("SEPSA.xls").Activate
                ActiveCell.Offset(0, 2) = Dato1
                ActiveCell.Offset(0, 3) = Dato2
                ActiveCell.Offset(0, 4) = Dato3
                Exit Do
            End If
            ActiveCell.Offset(1, 0).Select
        Loop
        Windows("SEPSA.xls").Activate
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
      * Cierra el Editor de Visual Basic
Ahora ejecuta la macro así :
     * Alt-F8 - selecciona Importar - Ejecutar
Algunas consideraciones :
-- Los archivos SEPSA y BANCOS deben estar en la misma carpeta que el libro donde coloques esta rutina. Si archivos se encuentran en otras carpetas, deberás especificar la ruta completa de cada archivo.
-- Los archivos SEPSA y BANCOS quedan abiertos al final de la rutina para tu revisión. Opcionalmente puedes incluir estas lineas a la rutina ¿entre el ultimo Loop y End Sub)   para cerrar uno o ambos archivos.
Windows("BANCOS.xls").Close
Windows("SEPSA.xls").Close savechanges:=True
¿Hola cómo estamos?
Que crees que no me funciono, mira te pongo un ejemplo de como esta
SEPSA FILA 2 datos a comparar columna d
A B C D E (aquí se comienzan a pegar los datos)
1 38285393 06/07/2009 12,436.00 13
BANCOS FILA 4 datos a comparar columna H
A B C D E F G H
109 220709 2003 960305 BANOBRAS, SNC F/2003 (FONDO DE 859 1 1 0 75593071
Cada una de las hojas tiene como 4000 filas, lo que necesito es que la columna "d" de SEPSA, se compare con la columna "H" de bancos, cuando por ejemplo en "d2" de SEPSA este en "H200" deberá copiar los datos de la columna A200, D200 y H200, y así por cada valor que encuentre deberá pegarlo en su respectiva fila en el archivo SEPSA, espero haberme explicado bien.
De antemano te agradezco de nuevo todo el tiempo que me has dedicado, muchas gracias!, ¿Oye no tendrás messenger o correo?, saludos y buen fin de semana!
Eso no fue lo que preguntaste al inicio.
Primero dices que en Sepsa copie los valores en f, g y h ahora dices en E, F, G
Luegos dices que en Bancos, busque en la columna "a" (no especificas fila), ahora dice que busque en H4
Cuanto más detallada y exacta es una pregunta, más eficiente es la respuesta que obtienen los usuarios.
La rutina es correcta, solo hay que ajustar los coordenadas o celdas que se van a comparar y copiar.
El código quedaría a así:
Sub Importar()
    Application.ScreenUpdating = False
    Workbooks.Open Filename:="BANCOS.xls"
    Workbooks.Open Filename:="SEPSA.xls"
    Range("D2").Select
    Do While ActiveCell <> ""
        Dato = ActiveCell
        Windows("BANCOS.xls").Activate
        Range("H4").Select
        Do While ActiveCell <> ""
            If Int(ActiveCell) = Int(Dato) Then
                Dato1 = ActiveCell.Offset(0, -7)
                Dato2 = ActiveCell.Offset(0, -4)
                Dato3 = ActiveCell.Offset(0, 0)
                Windows("SEPSA.xls").Activate
                ActiveCell.Offset(0, 1) = Dato1
                ActiveCell.Offset(0, 2) = Dato2
                ActiveCell.Offset(0, 3) = Dato3
                Exit Do
            End If
            ActiveCell.Offset(1, 0).Select
        Loop
        Windows("SEPSA.xls").Activate
        ActiveCell.Offset(1, 0).Select
    Loop
    Windows("BANCOS.xls").Close
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas