Cómo insertar fórmula según condición

Describo la siguientes macro, mediante la cual, cada vez que pongo un dato en C, automáticamente realiza un buscarv trayéndome el resultado en D. Hago la siguiente consulta:

¿Qué debo cambiar en la macro para que en C aplique buscarv sólo en las celdas que sean desigual al signo - (<>"-")?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
With [D3].Resize([C3:C5000].Count)
  .Formula = "=iferror(VLOOKUP($C3,Sucursales!$B$3:$E$2000,2,false),"""")"
  .Value2 = .Value2
  .Replace What:=False, Replacement:=""
End With
End If
End Sub

1 Respuesta

Respuesta
1

Como estas!

Target es el valor de la celda, por lo tanto tienes que agregarle And Target <> "-"

Proba con el siguiente script

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target <> "-" Then
With [D3].Resize([C3:C5000].Count)
.Formula = "=iferror(VLOOKUP($C3,Sucursales!$B$3:$E$2000,2,false),"""")"
.Value2 = .Value2
.Replace What:=False, Replacement:=""
End With
End If
End Sub

Por favor recuerda valorar la respuesta!

Slds

Juan

Juan,

En primer lugar gracias por contestar. Haciendo lo que me dices me tira un error '13' diciendo que no coinciden los tipos...

Según verifique ese error lo tira al entrar por segunda vez al Bucle, por lo tanto el error esta en el código original.

With [D3].Resize([C3:C5000].Count)
.Formula = "=iferror(VLOOKUP($C3,Sucursales!$B$3:$E$2000,2,false),"""")"
.Value2 = .Value2
.Replace What:=False, Replacement:=""
End With

¿Dónde debería colocar el valor del Vlookup? Por que según veo el el valor lo estas metiendo en C3, entonces al tratar de realizar el vlookup estaría pisando el valor original

El valor a buscar se ingresa manualmente en C, y el resultado aparece en D. O sea que si en C25 ingreso el valor a buscar, en D25 aparece el valor buscado.

Ahora si, fíjate si ahora te funciona!

Incorporé al IF el Guion y lo saque de la macro original ya que tiraba error cuando el target era empty

*********************************************************************************

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 Then

With [D3].Resize([C3:C5000].Count)
ActiveSheet.Range(Cells(Target.Row, 4), Cells(Target.Row, 4)).Value = "=IF(RC[-1]=""-"","""",IFERROR(VLOOKUP(RC3,Sucursales!R3C2:R2000C5,2,FALSE),""""))"
'.Replace What:=False, Replacement:=""
End With

End If
End Sub

*********************************************************************************

Por favor recuerda valorar la respuesta!

Slds

Juan

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas