Macro para pegar formula en diferentes Columnas

Espero me puedan ayudar con mi duda.

Tengo una Macro que me funciona perfectamente para pegar una formula "vlookup" en 3 columnas diferentes de una Hoja llamada "Nuevo Proceso" y haciendo la búsqueda en otra Hoja llamada "Base Derrama", ejemplo:

Si estoy en la Hoja "Nuevo Proceso", columna "D3" mi macro pega mi formula en "D3, E3 y F3".

Si estoy en la Hoja "Nuevo Proceso", columna "D84" mi macro pega mi formula en "D84, E84 y F84"

Yo quisiera pegar esta misma formula con Macro pero en todo el Rango de celdas que seleccione, ejemplo:

Si estoy en la Hoja "Nuevo Proceso", columna "D3" y selecciono hasta la "D84", mi macro pega mi formula en "D3 hasta F84".


Posiblemente el rango de celdas que seleccione en la columna D sea menor o sea mucho mayor, pero no se si es posible realizar esta acción.

Esta es mi Macro

(Posiblemente me estoy complicando la vida con mi Macro y hay una forma de hacerla mas corta y sencilla, pero no se mucho de excel y utilizo y revuelvo lo que encuentro en internet)

ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(VLOOKUP(RC[-1],'Base Derrama'!C:C[1],2,0)),"""",VLOOKUP(RC[-1],'Base Derrama'!C:C[1],2,0))"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(VLOOKUP(RC[-2],'Base Derrama'!C[-1]:C[1],3,0)),"""",VLOOKUP(RC[-2],'Base Derrama'!C[-1]:C[1],3,0))"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(VLOOKUP(RC[-3],'Base Derrama'!C[-2]:C[9],12,0)),"""",VLOOKUP(RC[-3],'Base Derrama'!C[-2]:C[9],12,0))"

Espero me puedan ayudar

Gracias y Saludos

1 respuesta

Respuesta
1

Te cambio la macro.

Sub formula()
lin = Selection.Row
col = Selection.Column
For Each celda In Selection
Cells(lin, col).Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(VLOOKUP(RC[-1],'Base Derrama'!C:C[1],2,0)),"""",VLOOKUP(RC[-1],'Base Derrama'!C:C[1],2,0))"
Cells(lin, col + 1).Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(VLOOKUP(RC[-2],'Base Derrama'!C[-1]:C[1],3,0)),"""",VLOOKUP(RC[-2],'Base Derrama'!C[-1]:C[1],3,0))"
Cells(lin, col + 2).Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(VLOOKUP(RC[-3],'Base Derrama'!C[-2]:C[9],12,0)),"""",VLOOKUP(RC[-3],'Base Derrama'!C[-2]:C[9],12,0))"
lin = lin + 1
Next
End Sub

Saludos.Dam
Podrías de favor, cerrar la pregunta.

Muchas, muchas gracias, funciona perfectamente

Últimamente me has ayudado mucho y te agradezco todo tu apoyo y atención.

Saludos y gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas