Evitar datos repetidos en columnas

Tengo una macro que me envía un mensaje cuando hay un dato repetido en una columna, me funciona para columna A1:A10 quiero utilizarla en otra columna G1:G10 pero no he podido adaptarla, agradezco la colaboración para poder modificarla, y utilizar en diferentes columnas y el rango que necesite. De antemano gracias.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then
If Target.Count = 1 Then
If Target.Value <> "" Then
canti = Application.WorksheetFunction.CountIf(Range("A1:A10"), Target.Value)
If canti > 1 Then
MsgBox "Este código ya se encuentra registrado"
Target = ""
End If
End If
End If
End If
End Sub

1 respuesta

Respuesta
4

Te dejo la macro ajustada para los rangos en col A y G:

Private Sub Worksheet_Change(ByVal Target As Range)
'modificada x Elsamatilde
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Or Target.Column <> 1 And Target.Column <> 7 Then Exit Sub
'el rango dependerá de la col activa
x = Target.Column
canti = Application.WorksheetFunction.CountIf(Range(Cells(1, x), Cells(10, x)), Target.Value)
If canti > 1 Then
    MsgBox "Este código ya se encuentra registrado en esta columna."
    Target = ""
End If
End Sub

Pero si tu idea es que tendrás más adelante otras col con esta restricción, quizás debieras utilizar una solución con la herramienta Validación de datos en lugar de la macro.

Para una col cualquiera, digamos A:

Seleccionar la primer celda (x ej, A1) y desde menú Validación, Personalizada y en Fórmula ingresá lo siguiente (ajusta el rango), agregás un mensaje de error, Luego lo arrastrás al resto de la col.

=CONTAR.SI($A$1:$A$10;A1) < 2

¡Gracias! Muchísimas gracias Elsa,, ya pude realizarlo, muy amable

Que pena Elsa una adicional, si el dato repetido lo ingrese en la celda A5 como hago para que cuando le de aceptar al msgbox, no se me vaya la celda a la celda A6 si no que se me devuelva a la celda don ingrese el dato repetido.

En la línea donde limpias el Target, volvelo a seleccionar:

If canti > 1 Then
    MsgBox "Este código ya se encuentra registrado en esta columna."
    Target = "" : Target.Select    'AGREGAR AQUÍ
End If
End Sub

Sdos!

¡Gracias! Gracias, muy amable ahora si a la perfección

Quisiera confirmar si se trata de un error o realmente consideras que esas son las votaciones que te merecieron las respuestas recibidas en esta consulta: Cambiar el texto predeterminado de una celda - BUSCARV

Me llama la atención que una respuesta donde se te comenta que no se entiende, que necesita más detalles, etc, etc... tiene una votación de 'Excelente'.?

Y mi respuesta, detallada y con el desarrollo de una macro que responde a lo que yo entendí que fue tu consulta... no muestra ninguna votación. Si no te sirvió por lo menos hubiese esperado que me lo comentes.

Lo que me lleva a pensar que ¿quizás te equivocaste de expert@ al momento de votar? Puedes modificar ésto si crees que así fue.

Sdos!

Ya está. Parece que mi análisis y macro enviados un día antes sirvieron para que el experto luego manifieste 'ya tengo una solución' ;)

Misión cumplida!

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas