¿Cómo puedo no repetir un rango de datos en excel.?

Es fácil no repetir un valor pero no puedo hacer que sean varios valores. Ejemplo:

a1=12 b1=45 c1=66

y estos valores no se deben repetir o sea a124=12 b124=45 c124=66 (Esto no debe pasar)

pero si

a126=12 b126=45 c124=68 // a126=15 b126=45 c124=68 // a126=12 b126=75 c124=68

Es como si le asignáramos un nombre a un rangos de 3 celdas y los valores de este rango no se debe repetir en el orden digitado.

(Excel 2003 y 2007)

1 respuesta

Respuesta
1

Te propongo solucionarlo con un formato condicional que iluminará la celdas en rojo cuando estén duplicadas, veamos un ejemplo:

-Empezamos a introducir números desde A1 - B1 - C1 hacia abajo

-En la celda D1 introduce esta fórmula: =A1&B1&C1 y la arrastras hacia abajo del todo mientras que existan datos a la izquierda

-Ahora marca con el ratón el rango A1:¿C? (Hasta donde llegue)

-Elige formato condicional y dentro toma la opción de fórmula. Dentro de la casilla anota esta fórmula:

=contar.si(D:D;$D1)>1

Después elige un color de relleno y pulsa aceptar.

Solo queda que hagas pruebas y repetir secuencias de números. Cuando eso suceda se iluminarán en rojo para alertarte.

Recuerda finalizar la consulta

Ya realice eso pero tengo el problema que se me iluminan muchas ya que pueden haber muchas repetidas ya que son un correlativo por año o sea la primera celda es un correlativo al igual que la según y estas vuelven a 1 por año que es la tercera celda.

A1=correlativox B1=correlativoy C1=Año y tengo registro desde 1980 en adelante. Lo que quiero es no repetir estos valores. Los tres valores corresponden a un solo registro que consta íntegramente de los tres.

a1=dia b1=mes c1=año Pensando que días pueden llegar 11000 y los meses 6000 y año a 2012 no se puede repetir mi cumpleaños.

Pero hay una cosa que no tengo clara:

¿Los datos están escritos ya y sabemos que hay repetidos?

¿Quieres eliminarlos?

Primeramente te agradezco el tiempo que has puesto en esto.

No los datos van a ser ingresados manualmente.

y quiero que no ingresen repetidos.

Gracias

Entonces vamos a hacer esta macro:

-Cuando tengas números escritos en las columnas A, B y C solo tienes que ejecutar esta macro para que haga una limpieza y te borre los que están duplicados, dejando solo secuencias únicas.

Todo está pensado para empezar los datos desde A1 hacia abajo

Sub ejemplo()
'por luismondelo
Range("d1").Select
Do While ActiveCell.Offset(0, -1).Value <> ""
ActiveCell.Value = ActiveCell.Offset(0, -3) & ActiveCell.Offset(0, -2) & ActiveCell.Offset(0, -1)
ActiveCell.Offset(1, 0).Select
Loop
Range("d1").Select
Do While ActiveCell.Value <> ""
contarsi = Application.WorksheetFunction.CountIf(Columns(ActiveCell.Column), ActiveCell)
If contarsi > 1 Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Columns("d:d").ClearContents
End Sub

Recuerda finalizar la consulta

Muchas gracias

pero existe alguna forma de hacer que al ingresar el dato que ya esta ingresado excel no deje?

Mucha gracias

Claro, te mando la solución. En este caso tenemos que programar el evento change de la hoja en cuestión para que luego llame a la macro que tenemos en módulo.

Esta macro es la que tienes que copiar en el objeto hoja que estamos tratando:

Private Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Thencontar1 = Application.WorksheetFunction.CountA(Columns("a:a"))contar2 = Application.WorksheetFunction.CountA(Columns("b:b"))contar3 = Application.WorksheetFunction.CountA(Columns("c:c"))If contar1 = contar2 And contar2 = contar3 ThenfilasEnd IfEnd IfEnd Sub

Y esta es la macro que tienes que copiar en un módulo normal

Sub filas()Range("d1").SelectDo While ActiveCell.Offset(0, -1).Value <> ""ActiveCell.Value = ActiveCell.Offset(0, -3) & ActiveCell.Offset(0, -2) & ActiveCell.Offset(0, -1)ActiveCell.Offset(1, 0).SelectLoopRange("d1").SelectDo While ActiveCell.Value <> ""contarsi = Application.WorksheetFunction.CountIf(Columns(ActiveCell.Column), ActiveCell)If contarsi > 1 ThenActiveCell.EntireRow.DeleteElseActiveCell.Offset(1, 0).SelectEnd IfLoopColumns("d:d").ClearContentsEnd Sub

Ahora solo tienes que hacer la prueba de escribir secuencias repetidas en la hoja y en las columnas A B y C

Experto "Luis"

Muchas gracias por ayudarme en este dilema, espero en algún momento poder ayudar a alguien de la misma forma que lo estas haciendo tu.

No me manejo mucho con la programación, pero se que tiene una estructura y al incorporar la macro en forma lineal me arroja un error. Al darle yo una estructura me arroja error al ingresar cualquier número en la planilla.

Me podrías dar la estructura original de la macro si es que no fuera mucha la molestia.

Completamente agradecido

Marcelo

Tienes razón la web tiene un error y copia las macros en una sola línea. Te las vuelvo a copiar aquí:

Esta macro es la que tienes que copiar en el objeto hoja que estamos tratando:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Then
contar1 = Application.WorksheetFunction.CountA(Columns("a:a"))
contar2 = Application.WorksheetFunction.CountA(Columns("b:b"))
contar3 = Application.WorksheetFunction.CountA(Columns("c:c"))
If contar1 = contar2 And contar2 = contar3 Then
filas
End If
End If
End Sub

Y esta es la macro que tienes que copiar en un módulo normal

Sub filas()
Range("d1").Select
Do While ActiveCell.Offset(0, -1).Value <> ""
ActiveCell.Value = ActiveCell.Offset(0, -3) & ActiveCell.Offset(0, -2) & ActiveCell.Offset(0, -1)
ActiveCell.Offset(1, 0).Select
Loop
Range("d1").Select
Do While ActiveCell.Value <> ""
contarsi = Application.WorksheetFunction.CountIf(Columns(ActiveCell.Column), ActiveCell)
If contarsi > 1 Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Columns("d:d").ClearContents
End Sub

Ahora solo tienes que hacer la prueba de escribir secuencias repetidas en la hoja y en las columnas A B y C

Muchas gracias, a sido un gran placer comunicarme contigo.

“Jehová con sabiduría fundó la tierra; afirmó los cielos con inteligencia. Con su ciencia los abismos fueron divididos, y destilan rocío los cielos" (Proverbios 3:19-20).

Y Luismondelo con su sabiduría hace lo que quiere con las macros.

Bendiciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas