Inicio > Microsoft Excel > gualo > Consulta entre varios libros

Consulta entre varios libros

Experto:
Usuario:
Fecha: 21/02/2003
Valoración: Categoría: Microsoft Excel
09/03/2010
lsanchez1, usuario preguntando en Microsoft Excel
Usuario
Hola experto espero que me puedas ayudar con esta macro, te agradezco de antemano la atención.
Tengo un Libro (Rangos.xls)con datos en las columnas A,B,C y D necesito que desde otro libro (Consulta.xls)yo le consulte desde una celda, busque un número de 18 digitos que sea mayor o igual a la columna C y menor o igual a la columna D y me devuelva en una celda de Consulta.xls los datos correspondientes a la columna A, en otra celda los de la columna B y en otra la fila donde se encuentran los datos de la busqueda.
Y si no encuentra que me saque un mensaje de no encontrado.

Tengo una macro que me lo hace (adjunta), pero en la misma hoja y lo necesito en libros independientes.

Si no me entiendes, me podrías dar tu e-mail y te envio en una hoja de Excel donde se comprende mejor.
Mi e-mail es Lsanchez1@epm.net.co

Sub ensayo()
Range("C2").Select
f = 2
c = 3
Do

If(Cells(1, 6))>=(Cells(f, 3))Then
If(Cells(1, 6))<=(Cells(f, 4))Then
Range("F2").Value = Cells(f, 1)
Range("F3").Value = Cells(f, 2)
Range("F4").Value = f
Exit Do
End If
End If
f = f + 1
Loop Until (Cells(f, 3) = "")
End Sub
09/03/2010
lsanchez1, experto respondiendo en Microsoft Excel
Experto
La macro que me pides debe ir pegada en Consulta.xls y la debes ejecutar desde la celda donde esté el valor a buscar, es:

Sub Buscar()
BUSQUEDA = ActiveCell.Value
Windows("Rangos.xls").Activate
Range("C2").Select
Selection.End(xlDown).Select
While ActiveCell.Row > 1
If Not ActiveCell.Value < BUSQUEDA Then
If Not ActiveCell.Offset(0, 1).Value > BUSQUEDA Then
LODEA = ActiveCell.Offset(0, -2).Value
LODEB = ActiveCell.Offset(0, -1).Value
RENGLON = ActiveCell.Row
Windows("Consulta.xls").Activate
' ESTA INSTRUCCIÓN LE DICE QUE TE PEGUE LO DE "A" EN LA COLUMNA DE LA IZQUIERDA
ActiveCell.Offset(0, -1).Value = LODEA
' ESTA PEGA LO DE "B" EN LA CELDA DE LA DERECHA
ActiveCell.Offset(0, 1).Value = LODEB
'ESTA PEGA EL NÚMERO DE RENGLON DE "RANGOS" EN LA CELDA DE ABAJO
ActiveCell.Offset(1, 0).Value = RENGLON
End
End If
End If
ActiveCell.Offset(-1, 0).Select
Wend
End Sub


Espero te sirva
09/03/2010
lsanchez1, usuario preguntando en Microsoft Excel
Usuario
Gracias Gualo por tu interes, con esto ya tienes ganado mi reconocimiento...
mi duda es que no sé, como ejecutar la macro desde una celda, los datos a buscar estan en F1, disculpa mi ignorancia...
Nota te envio otra macro que me envio otro experto, me gustaría que la vieras, me funciona bien,le añadí que el libro Rangos.xls se abriera, pero no se viera, pero tengo un inconveniente, cada que repito la consulta me dice que el libro Rangos.xls, está abierto y cuando va a cerra me pide que lo salve, como puedo sortear esos inconvenientes para que el usuario final no los note?

Sub ensayo()
Application.ScreenUpdating = False
Workbooks.Open "C:\Documents and Settings\lsanchez\Mis documentos\Ciclos y Correrías\Consultas\Rangos.xls", ReadOnly:=True
Windows("Rangos.xls").Visible = False
Range("C2").Select
f = 2
c = 3
Do
If Workbooks("Consulta.xls").ActiveSheet.Cells(1, 6) >= Workbooks("Rangos.xls").ActiveSheet.Cells(f, 3) Then
If Workbooks("Consulta.xls").ActiveSheet.Cells(1, 6) <= Workbooks("Rangos.xls").ActiveSheet.Cells(f, 4) Then
Workbooks("Consulta.xls").ActiveSheet.Range("F2").Value = Workbooks("Rangos.xls").ActiveSheet.Cells(f, 1)
Workbooks("Consulta.xls").ActiveSheet.Range("F3").Value = Workbooks("Rangos.xls").ActiveSheet.Cells(f, 2)
Workbooks("Consulta.xls").ActiveSheet.Range("F4").Value = f
Exit Do
End If
End If
f = f + 1
Loop Until (Workbooks("Rangos.xls").ActiveSheet.Cells(f, 3) = "")
Windows("Rangos.xls").Activate
Workbooks("Consulta.xls").Activate
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Además si me pudieras decir donde le inserto el msgbox para que me indique que no encontró el registro, te lo agradecería...

Si no me entiendes te puedo enviar el archivo por e-mail.
tengo dos correos Lsanchez@eeppm.com y el otro es Lsanchez1@epm.net.co

Gracias
09/03/2010
lsanchez1, experto respondiendo en Microsoft Excel
Experto
la macro es correcta, pero si le dices que abra el libro lo va a querer abrir cada vez, es mejor que sólo lo manejes (ya abiertos los 2) que haga los cambios (aunque no se vea)

Para correr la macro, puedes usar el menu>Herramientas>Macro>Macros y la escoges de la lista que te despliega (ensayo). Hay otras maneras, pero es lo más simple. Recuerda que la debes ejecutar desde el archivo que tiene el dato en F1 a buscar.

Le puedes poner al final:
If f=2 then
msgbox "No se hallaron registros", 0, "Aviso"

Y si gustas, puedes enviarlo a gualo@wildmail.com
09/03/2010
lsanchez1, usuario preguntando en Microsoft Excel
Usuario
Gualo, la macro yo la activo desde un botón, yo pensé que te referias a activar la macro desde la celda, luego de introducirle la información.
No se porque no me funciona el msgbox.
Te enviaré los dos archivos para que tengas una idea más global de que es lo que quiero y de pronto te sirva para futuras consultas.
Gracias por tu atención, eres excelente
Enlaces patrocinados