Tengo una base de datos en Microsoft Excel y quiero que me avise cuando se repiten registros nuevos.

Hola Te escribo ya que tengo unos datos iglesados( nº de rol de propiedades que contiene números y letras) en un exel, y yo quiero saber como puedo hacer para cuando quiera inglesar un nuevo dato me diga que esta repetido y en que celda se encuentra saludos gracias

1 Respuesta

Respuesta
1
Me tienes que decir en que columna estas ingresando tus datos para poder hacer la macro que compruebe si están repetidos los datos que introduces.
>Un saludo
>Julio
Todos en la columna A
Abres tu Libro de Excel, pulsas la combinación Alt+F11 y en la ventana de VBA que aparece pulsa en la columna de la izquierda sobre el icono de la hoja donde estas trabajando, doble click y en la ventana de la derecha que aparece en blanco, pegas esta macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column = 1 And ActiveCell.Row > 1 Then
'está pensado para la col B
If ActiveCell.Offset(-1, 0).Value <> 0 Then
Dim valor As Variant
Dim actual, fila As Integer
actual = ActiveCell.Offset(-1, 0).Row
fila = 1 - actual
valor = ActiveCell.Offset(-1, 0).Value
Do While fila < -1
If ActiveCell.Offset(fila, 0).Value = valor Then
MsgBox ("Ya existe ese valor")
ActiveCell.Offset(-1, 0).Value = 0
ActiveCell.Offset(-1, 0).Select
fila = 0
Exit Do
Else
fila = fila + 1
End If
Loop
End If
End If
End Sub
La macro esta pensada para que tengas un nombre en la Cabecera y escribas lo que escribas en la Col A (números, texto, combinación de texto y numero...) si lo repites te aparece un mensaje advirtiéndote y te borra el valor poniéndote 0 y te vuelve a situar en la misma celda.
PD: Si necesitas alguna aclaración me lo dices.
Me ha servido super.. pero se puede agregar que me diga donde de escuentra ese valor repetido.
En el mismo mensaje te aparecerá la celda en la que se encuentra el valor repetido:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column = 1 And ActiveCell.Row > 1 Then
'está pensado para la col A
If ActiveCell.Offset(-1, 0).Value <> 0 Then
Dim valor As Variant
Dim actual, fila As Integer
actual = ActiveCell.Offset(-1, 0).Row
fila = 1 - actual
valor = ActiveCell.Offset(-1, 0).Value
Do While fila < -1
If ActiveCell.Offset(fila, 0).Value = valor Then
celda=ActiveCell.Offset(fila,0).Address
MsgBox ("Ya existe ese valor, esta en la celda " & celda & "")
ActiveCell.Offset(-1, 0).Value = 0
ActiveCell.Offset(-1, 0).Select
fila = 0
Exit Do
Else
fila = fila + 1
End If
Loop
End If
End If
End Sub
El formato de celda que te mostrará será si es la celda A5 te informará $A$5
>Un saludo
>Julio
PD: Comenta, puntúa y finaliza la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas