• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Borrar Fila según resultado

shinichikudo

New member
Hola amigos, quería hacerles una consulta, tengo un proyecto de Excel con 2 hojas, una llamada BASE y la otra REGISTRO.
Lo que necesito es que al cargar un determinado dato en la hoja "REGISTRO", si el valor es "NO", se borre la fila de la hoja "BASE" que contiene el valor que coincide. Les dejo capturas para graficarles mejor como sería el excel.

HOJA "REGISTRO": Como se ve en la imagen, en esta hoja todos los días cargo el nombre de un cliente (nombre único que coincide con el almacenado en la hoja BASE) y lo llamo por teléfono. Si el cliente me dice que lo llame en 5 días, escribo 5. Si me dice que no lo llame más, escribo "NO".

1.jpg


HOJA BASE: En esta hoja almaceno el nombre del cliente, el teléfono y el mail. Los nombres siempre serán únicos, no habrá 2 Pedro o 2 José, por lo que serán referencias únicas.

2.jpg

La cuestión es que quiero crear una macro, si es que existe la posibilidad, que al yo registrar un llamado como "NO" pueda presionar en un botón que contenga la macro y automáticamente busque al cliente en la hoja "BASE" y elimine la fila completa.

Espero me haya explicado correctamente y esté en la sección que corresponda del foro, sino, me disculpo de antemanos. Gracias!.
 

Cacho R

Well-known member
Hola! shinichikudo
Puedes intentar con lo que sigue:

JavaScript:
Sub Elimino_los_NO()
Dim C As Range
With Sheets("REGISTRO")
  For Each C In .Range(.[b1], .Cells(Rows.Count, "B").End(xlUp))
    If LCase(C) = "no" Then
      On Error Resume Next
      Sheets("BASE").Range("a:a").Find(What:=C.Offset(, -1), LookAt:=xlWhole, MatchCase:=False).Resize(, 3).Delete xlShiftUp
      On Error GoTo 0
    End If
  Next
End With
End Sub
 

shinichikudo

New member
Hola! shinichikudo
Puedes intentar con lo que sigue:

JavaScript:
Sub Elimino_los_NO()
Dim C As Range
With Sheets("REGISTRO")
  For Each C In .Range(.[b1], .Cells(Rows.Count, "B").End(xlUp))
    If LCase(C) = "no" Then
      On Error Resume Next
      Sheets("BASE").Range("a:a").Find(What:=C.Offset(, -1), LookAt:=xlWhole, MatchCase:=False).Resize(, 3).Delete xlShiftUp
      On Error GoTo 0
    End If
  Next
End With
End Sub
:O Gran idea esa Cacho! mañana mismo voy a probarlo, disculpa la demora en responder pero es que no pude hacerlo antes ... a simple vista es lo que buscaba pero en la practica lo sabre mañana jaja en breve hare un update de como me fue, gracias!
 
Arriba