Autofill que rellene inteligentemente (con referencia relativa)
publicado
Buenas,
Tengo una hoja en la que en la que en una de las columnas uso un buscarV, que además quiero que se autorrellene usando referencias relativas (el autorrelleno inteligente, vamos). Os pongo un ejemplo que no es real, ya que son decenas de miles de celdas, y tengo en cuenta el tamaño del rango que puede variar, etc….pero para simplificarlo.
Pero no quiero que se vea que es una macro grabada, por lo cutre que queda. Además porque quiero aprender. Así que uso la expresión Application.WorksheetFunction.VLookup directamente o bien, como lo uso varias veces me creo una funcion, que sería la equivalente a SI.ERROR(BUSCARV)):
Function buscar(ByVal valorBus As Range, ByVal rangoBusq As Range, ByVal ncolum As Integer) As String
Dim result As String
On Error Resume Next
s = Application.WorksheetFunction.VLookup(valorBus, rangoBusq, ncolum, False)
If IsError(result) Then
buscar = ""
Else
buscar = result
End If
End Function
De cualquiera de las dos formas, cuando luego uso AUTOFILL no rellena de forma inteligente:
Este mismo problema lo tengo también cuando quiero concatenar y rellenar. Por eso lo que quiero saber es....Hay alguna forma de que Autofill rellene haciendo uso de las referencias relativas? O bien, alguna forma de hacer referencia a las celdas de forma relativa en la función?
Muchas gracias de antemano.
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Buenas,
Tengo una hoja en la que en la que en una de las columnas uso un buscarV, que además quiero que se autorrellene usando referencias relativas (el autorrelleno inteligente, vamos). Os pongo un ejemplo que no es real, ya que son decenas de miles de celdas, y tengo en cuenta el tamaño del rango que puede variar, etc….pero para simplificarlo.
Si lo hago grabando una macro, obtengo esto:
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Hoja1!R2C1:R10C3,3,FALSE)"
Selection.AutoFill Destination:=Range("B2:B20")
Pero no quiero que se vea que es una macro grabada, por lo cutre que queda. Además porque quiero aprender. Así que uso la expresión Application.WorksheetFunction.VLookup directamente o bien, como lo uso varias veces me creo una funcion, que sería la equivalente a SI.ERROR(BUSCARV)):
Function buscar(ByVal valorBus As Range, ByVal rangoBusq As Range, ByVal ncolum As Integer) As String
Dim result As String
On Error Resume Next
s = Application.WorksheetFunction.VLookup(valorBus, rangoBusq, ncolum, False)
If IsError(result) Then
buscar = ""
Else
buscar = result
End If
End Function
De cualquiera de las dos formas, cuando luego uso AUTOFILL no rellena de forma inteligente:
Range("B2").Value = buscar(Range("A2"), Sheets("Hoja1").Range("A2:C10"), 2)
Range("B2").AutoFill Destination:=Range("B2:B20")
Este mismo problema lo tengo también cuando quiero concatenar y rellenar. Por eso lo que quiero saber es....Hay alguna forma de que Autofill rellene haciendo uso de las referencias relativas? O bien, alguna forma de hacer referencia a las celdas de forma relativa en la función?
Muchas gracias de antemano.