Ejecutar macro (que pegue una fórmula) si celda de columna A tiene texto.

Me gustaría me indiquen como hacer para que una macro pegue una fórmula en la fila H si existe texto en la columna A.
La formula que quisiera se pegue es: =SI.ERROR(BUSCARV(C25;Hoja2!C:H;6;FALSO);"")
El rango a evaluar si tiene texto es A11:A27
El rango donde pegar la fórmula es H11:H27

2 Respuestas

Respuesta
1

Prueba la macro

Sub macro()
    For i = 11 To 27
        If WorksheetFunction.IsText(Cells(i, "A")) Then
        Cells(i, "H").FormulaR1C1 = _
        "=IFERROR(VLOOKUP(R[14]C[-5],Hoja2!C[-5]:C,6,FALSE),"""")"
        End If
    Next i
    MsgBox "Terminado"
End Sub

Adriel, muchas gracias por la rapidez y efectividad. Evidentemente como di mal la referencia de la fórmula ahora quedo así:

Sub macro()
    For i = 11 To 27
        If WorksheetFunction.IsText(Cells(i, "A")) Then
        Cells(i, "H").FormulaR1C1 = _
        "=IFERROR(VLOOKUP(R[0]C[-5],Hoja2!C[-5]:C,6,FALSE),"""")"
        End If
    Next i
    'MsgBox "Terminado"
End Sub

Te consulto, como hacer para resumir esta rutina donde ve las variaciones que puede llegar a haber en el rango A11:A27 pues lo considero desprolijo

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$11" Then macro
If Target.Address = "$A$12" Then macro
If Target.Address = "$A$13" Then macro
If Target.Address = "$A$14" Then macro
If Target.Address = "$A$15" Then macro
If Target.Address = "$A$16" Then macro
If Target.Address = "$A$17" Then macro
If Target.Address = "$A$18" Then macro
If Target.Address = "$A$19" Then macro
If Target.Address = "$A$20" Then macro
If Target.Address = "$A$21" Then macro
If Target.Address = "$A$22" Then macro
If Target.Address = "$A$23" Then macro
If Target.Address = "$A$24" Then macro
If Target.Address = "$A$25" Then macro
If Target.Address = "$A$26" Then macro
If Target.Address = "$A$27" Then macro
End Sub

Gracias Adriel por tu colaboración.

Finaliza


Prueba la siguiente macro

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A11:A27")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
         If WorksheetFunction.IsText(Cells(Target.Row, "A")) Then
            Cells(Target.Row, "H").FormulaR1C1 = _
            "=IFERROR(VLOOKUP(R[0]C[-5],Hoja2!C[-5]:C,6,FALSE),"""")"
        End If
    End If
End Sub
Respuesta
1

Ejecuta la siguiente macro en la hoja donde quieres las fórmulas

Sub Macro2()
  Range("H11:H27").Formula = "=IFERROR(IF(RC[-7]<>"""",VLOOKUP(RC[-5],Hoja2!C[-5]:C,6,0),""""),"""")"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas