Función buscarv selección variable

Que tengo,
la primera_
La función BUSCARV te busca en una matriz determinada de datos, ¿hay forma de que se le pueda dar el nombre del archivo que debe utilizar como matriz con un imputbox? Mi problema es que cada día tengo que hacer comparaciones para encontrar agregados a unos pedidos, este archivo siempre tiene dombre diferente, en mi caso la fecha.
Segunda-
Por ejemplo, tengo la selección de la matriz en una macro, la selección va desde A1 hasta H79 pero ¿como puedo indicarle a la macro que me selecciones siempre desde A1 hasta la ultima fila con datos H ¿?, el caso es que cada día el archivo donde selecciono la matriz es más grande o más pequeño que el anterior no tiene un tamaño determinado,
Si me pudieran ayudar.

1 respuesta

Respuesta
1
Respecto a la primera... pues no veo como a menos que abras el libro o bien realices una consulta mediante importación de los datos creando una nueva conexión mediante sql server o query...
En cuanto a la segunda
Utiliza la funcion Application. WorksheetFunction. CountA(Sheets(1).range("A:A"))
En donde en el caso de este ejemplo cuenta los elementos de la columna A de la hoja1
Así le pasa el valor a una variable y luego concatenas para realizar el rango, algo así:
n = Application.WorksheetFunction.CountA(Sheets(1).Range("A:A"))
Range("A1" & ":" & "H" & n)
La verdad soy principiante en esto y no se como hacerlo, en el primer caso te cuento que tengo un archivo en mi trabajo creado por otra persona que realiza algo parecido creo yo, y solo me gustaría modificar el código para que esa macro realize lo que necesito,
En el caso dos no se como usar la funcin que me propones, como te mencione soy principiante y pues me cuesta un montón, el código que me da el vbuscar es este
=CONSULTAV(A3;'26.XLS'!$A$17:$G$35;2;0)
Como puedo insertar la función que me propones, te agradecería la ayuda es que no tengo ni la menor idea como hacer eso..
Pon el macro que tines y te hago las modificaciones para que el rango sea dinámico
Este es el código que utilizo.
Sub Macro2()
'
' Macro2 Macro
'
'
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-3],[13092011.xls]CARGA_NOCHE!R13C2:R81C3,2,0)"
Selection.AutoFill Destination:=Range("D2:D98")
Range("D2:D98").Select
ActiveWindow.SmallScroll Down:=45
End Sub
Esta linea
"=VLOOKUP(RC[-3],[13092011.xls]CARGA_NOCHE!R13C2:R81C3,2,0)"
Busca el valor ingresado en col A, y lo busca en el libro 13092011.xls en la hoja CARGA_NOCHE en el rango b13:c81
Esta linea
Selection.AutoFill Destination:=Range("D2:D98")
Autorrellena el rango d2:d98
¿Ahora tu deseas hacer dinámico el rango de relleno?
Si es así debes contar los elementos de la hoja 13092011, pero según la linea de consulta ya tienes predefinido un rango que es hasta la celda c81, por lo tanto tienes de antemano el total máximo de elementos
Aclarame el tema.
Creo que no te explique bien, paso a detallarlo y de antemano muchas gracias por tomarte el tiempo para resolver este problemita.
El código que te coloque es de la macro normal, quiero decir la del día de 13-09-11 que seria este código,
"=VLOOKUP(RC[-3],[13092011.xls]CARGA_NOCHE!R13C2:R81C3,2,0)"
Hasta allí todo bien el problema es que por ejemplo el día 14-09-11 este mismo archivo CARGA_NOCHE va desde b13 hasta c98 allí mi problema, que no puedo ejecutar de nuevo la macro porque habría pedidos que no tomaría en cuenta, quiero decir que la selección solo llegaría hasta c81.
Lo que necesitaría es que para la celda final de la selección me busque la ultima celda en blanco en la columna C y me selecciones desde allí hasta b13. y luego continue ejecutando normalmente la macro.
Bueno creo que ahora si, y de antemano muchas gracias por tu tiempo.
Saludos.
Prueba así, ahora te pedirá el nombre del libro ( como pensabas originalmente)
Sub Macro2()
Dim libro As String
Dim n As Long
libro = InputBox("Nombre del Libro SIN la extencion xls ", "Libro a consultar")
If Len(libro) = 0 Then Exit Sub
libro = libro & ".xls"
Range("iv1").FormulaR1C1 = "=COUNTA([" & libro & "]CARGA_NOCHE!R13C2:R65536C2)"
n = [iv1] + 12
[iv1].Clear
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-3],[" & libro & "]CARGA_NOCHE!R13C2:" & "R" & n & "C3,2,0)"
Selection.AutoFill Destination:=Range("D2:D98")
Range("D2:D98").Select
ActiveWindow.SmallScroll Down:=45
End Sub
Estuve haciendo pruenas con el código que me enviaste y me dio un problema cuando modifique las lista donde estaba realizando la macro lo que hice fue que agrande la lista un poco y me dio error 1004 en tiempo de ejecución
Selection.AutoFill Destination:=Range("D2:D98")
Imagino que fue por la celda final que ahora ya no es d98 si no que es d105.
Me ayudas con este ultimo error,
Por lo demás esta muy bien.
Se me ocurre que se pudiera dejar el autofill como que busque la ultima fila a la izquierda con datos y así rellenaría todos sin importar si son 50 o 100. Bueno es una idea
Gracias por tu respuesta tan pronta a mi consulta anterior.
Prueba
Selection.AutoFill Destination:=Range("D2:D65536")
o
Selection.AutoFill Destination:=Range("D2" & ":" & "D" n)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas