Quisiera hacer una macro con fórmula que tengo en una celda, para un rango de una columna.

quisiera hacer una macro con esta formula  =SI.ERROR(BUSCARV(E3;'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!$N:$S;6;FALSO);"0") pero no solo para la celda E3, sino para todas las celdas ocupadas de la columna E desde la celda E3.

1 respuesta

Respuesta
1

H o l a:

Solamente te faltó comentar en cuál columna quieres la fórmula. En la macro que te estoy enviando la fórmula la estoy poniendo en la columna F, cambia las F's en esta línea de la macro por la letra de la columna donde quieres la fórmula:

With Range("F3:F" & Range("E" & Rows.Count).End(xlUp).Row)

Por ejemplo, si quieres que la fórmula quede en la columna G:

With Range("G3:G" & Range("E" & Rows.Count).End(xlUp).Row)

La macro:

Sub PonerFormula()
'Por.Dante Amor
    With Range("F3:F" & Range("E" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC5,'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!C14:C19,6,FALSE),""0"")"
    End With
End Sub

Si son muchas fórmulas y quieres quitar las fórmulas y dejar solamente los valores:

Sub PonerFormula()
'Por.Dante Amor
    With Range("F3:F" & Range("E" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC5,'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!C14:C19,6,FALSE),""0"")"
        .Value = .Value
    End With
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Disculpa mi ignorancia, pero me he perdido, he sustituido como me indicaste la columna F por la columna N; te envío lo que he puesto:

' Abrir el libro de Tanya
Application.ScreenUpdating = False
Workbooks.Open Filename:= _
"C:\Users\usuario\Desktop\ropa tanya envios\FACTURAS ARTICULOS CLIENTES TANYA.xlsm"
Sheets("VTA").Select
Windows("HOJA PRECIOS GENERAL REFINITIVO.xlsm").Activate
Sheets("ARTICULOS").Select
With Range("M3:M" & Range("E" & Rows.Count).End(xlUp).Row)
.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC5,'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!$N:$S,6,FALSE),""0"")"
.Value = .Value
End With

Que celda es RC5, ¿No debería ser de la columna E desde la fila 3 hasta la ultima fila?, y no entiendo que significa FORMULAR1C1,¿podrías aclarármelo por favor?

Cuando ejecuto esta macro me da el siguiente error:

Se ha producido el error `1004`en tiempo de ejecución:

Error definido por la aplicación o el objeto.

Muchas gracias por tu tiempo y esfuerzo dedicados.

Te respondo tus dudas:

1. RC5 no es una celda es una referencia y significa R (Row -Fila), C (Column -Columna-); En VBA puedes utilizar las referencias o las celdas, pero en este caso, por el método que estoy utilizando, lo que se necesita es poner la referencia.

Entonces la Referencia es RC5, R se refiere a la fila dónde está la fórmula, y C5 se refiere a la columna 5, o sea, la columna E.

2. La fila 3 es donde se va a poner la fórmula y eso se indica en esta instrucción:

With Range("M3:M" & Range("E" & Rows.Count).End(xlUp).Row)

El 3 que ves en la fórmula es donde va a empezar a poner la fórmula.

3. FormulaR1C1, significa que vamos a poner en la celda una fórmula con referencia R (Row) C (Column)

4. Modificaste esta parte de la macro, esa parte no la modifiques.

"=IFERROR(VLOOKUP(RC5,'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!C14:C19,6,FALSE),""0"")"

5. La macro completa quedaría así:

Sub macro()
'Act.Por.Dante Amor
' Abrir el libro de Tanya
    Application.ScreenUpdating = False
    Workbooks.Open Filename:= _
        "C:\Users\usuario\Desktop\ropa tanya envios\FACTURAS ARTICULOS CLIENTES TANYA.xlsm"
    Sheets("VTA").Select
    Windows("HOJA PRECIOS GENERAL REFINITIVO.xlsm").Activate
    Sheets("ARTICULOS").Select
    With Range("M3:M" & Range("E" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC5,'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!C14:C19,6,FALSE),""0"")"
        .Value = .Value
    End With
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! Muchísimas gracias por las aclaraciones, poco a poco voy entendiendo la forma de programar de excel con visual basic. Un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas