ELIMINAR DATOS REPETIDOS

14/05/2004 - 17:08 por Ing. Héctor Montero Sobrado | Informe spam
Hola Amigos.
Quisiera me pudieran ayudar con la siguiente situacion.
Tengo una hoja en la que en la columna A tengo varios Codigos, y algunos de
estos se repiten. quisiera solamente que deje valores únicos.
Pero a su vez, no quiero que elimine cualquier valor, sino que debe de
cumplir con una condición adicional, y es que en la columna B, tengo un
valor de hora de la Transacción.
Si el valor del codigo está repetido y adicionalmente necesito que compare
las horas y elimine la línea con la HORA menor.
Obviamente si el valor no está repetido que lo mantenga, pues puede haber
valores que no se repitan y los necesito.

gracias
pura Vida
HMS

Preguntas similare

Leer las respuestas

#1 Leandro
14/05/2004 - 18:44 | Informe spam
Desde Excel creo que se te va a compliar un poco.

Lo más sencillo es que utilices Access, se simplificarian
mucho las cosas.


Hola Amigos.
Quisiera me pudieran ayudar con la siguiente situacion.
Tengo una hoja en la que en la columna A tengo varios


Codigos, y algunos de
estos se repiten. quisiera solamente que deje valores


únicos.
Pero a su vez, no quiero que elimine cualquier valor,


sino que debe de
cumplir con una condición adicional, y es que en la


columna B, tengo un
valor de hora de la Transacción.
Si el valor del codigo está repetido y adicionalmente


necesito que compare
las horas y elimine la línea con la HORA menor.
Obviamente si el valor no está repetido que lo mantenga,


pues puede haber
valores que no se repitan y los necesito.

gracias
pura Vida
HMS


.

Respuesta Responder a este mensaje
#2 Héctor Miguel
14/05/2004 - 23:11 | Informe spam
hola, chicos !

... Héctor Montero escribio en el mensaje
... columna A ... varios codigos ... algunos ... se repiten ... que deje valores unicos.
... no quiero que elimine cualquier valor ... condicion ... columna B ... hora de la transacción.
... que compare las horas y elimine la linea con la HORA menor [...]

Leandro escribio en el mensaje
Desde Excel creo que se te va a complicar un poco.
Lo mas sencillo es que utilices Access, se simplificarian mucho las cosas.





no se que tanto 'mas facil' pudiera resultar usando access :))
siguiendo un poquito 'la logica' de lo que se requiere...
la siguiente es una 'forma' [de entre otras 'posibles'] de lograr lo solicitado: ;)
[suponiendo que NO existen 'repetidos' =>con la misma hora<= 'de transaccion']

si cualquier duda o 'comportamiento extraño'... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Eliminar_Repetidos_Anteriores()
Dim Codigos As String, Horas As String, Repetidos As String, Fila As Long
Codigos = Range(Range("a2"), Range("a65536").End(xlUp)).Address
Horas = Range(Codigos).Offset(, 1).Address
With Range(Codigos)
If .Rows.Count = Evaluate("Sum(1/CountIf(" & Codigos & "," & Codigos & "))") Then Exit Sub
For Fila = 1 To .Rows.Count
If Application.CountIf(Range(Codigos), .Cells(Fila)) > 1 _
And .Cells(Fila).Offset(, 1) < Evaluate("Max(If(" & Codigos & "=""" & .Cells(Fila) & """," & Horas & "))") Then
If Repetidos <> "" Then Repetidos = Repetidos & ","
Repetidos = Repetidos & .Cells(Fila).Address
End If
Next
End With
If Repetidos <> "" Then Range(Repetidos).EntireRow.Delete
End Sub
Respuesta Responder a este mensaje
#3 Manuel Romero
15/05/2004 - 00:35 | Informe spam
Desde Access es una simple consulta

SELECT Codigo,Min(Hora) FROM Tabla GROUP BY Codigo

"Héctor Miguel" escribió en el mensaje
news:
hola, chicos !

> ... Héctor Montero escribio en el mensaje
> ... columna A ... varios codigos ... algunos ... se repiten ... que deje


valores unicos.
> ... no quiero que elimine cualquier valor ... condicion ... columna B


... hora de la transacción.
> ... que compare las horas y elimine la linea con la HORA menor [...]

>> Leandro escribio en el mensaje
>> Desde Excel creo que se te va a complicar un poco.
>> Lo mas sencillo es que utilices Access, se simplificarian mucho las


cosas.

no se que tanto 'mas facil' pudiera resultar usando access :))
siguiendo un poquito 'la logica' de lo que se requiere...
la siguiente es una 'forma' [de entre otras 'posibles'] de lograr lo


solicitado: ;)
[suponiendo que NO existen 'repetidos' =>con la misma hora<= 'de


transaccion']

si cualquier duda o 'comportamiento extraño'... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==> Sub Eliminar_Repetidos_Anteriores()
Dim Codigos As String, Horas As String, Repetidos As String, Fila As


Long
Codigos = Range(Range("a2"), Range("a65536").End(xlUp)).Address
Horas = Range(Codigos).Offset(, 1).Address
With Range(Codigos)
If .Rows.Count = Evaluate("Sum(1/CountIf(" & Codigos & "," & Codigos &


"))") Then Exit Sub
For Fila = 1 To .Rows.Count
If Application.CountIf(Range(Codigos), .Cells(Fila)) > 1 _
And .Cells(Fila).Offset(, 1) < Evaluate("Max(If(" & Codigos & "="""


& .Cells(Fila) & """," & Horas & "))") Then
If Repetidos <> "" Then Repetidos = Repetidos & ","
Repetidos = Repetidos & .Cells(Fila).Address
End If
Next
End With
If Repetidos <> "" Then Range(Repetidos).EntireRow.Delete
End Sub

Respuesta Responder a este mensaje
#4 Héctor Miguel
15/05/2004 - 02:13 | Informe spam
hola, Manuel !

Desde Access es una simple consulta
SELECT Codigo,Min(Hora) FROM Tabla GROUP BY Codigo



gracias por el apunte ;)
en realidad, no me he 'metido' con el access [me declaro 'neofito' -por ahora-]
en virtud de mi 'desconocimiento' con bases de datos =>relacionadas<=...
me gustaria preguntar:

=> 'esa simple consulta'... [que se me 'antoja' equipararla con los filtros avanzados de excel]
¿'hace' lo que solicita el postor original? [es decir...]
- 'elimina' las filas de [todos] los codigos 'repetidos' [dejando 'vivo' -solo- el mas 'reciente']
- y... si existieran 2, 10 o mas codigos 'repetidos'... [???]

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#5 Héctor Miguel
16/05/2004 - 08:24 | Informe spam
hola, 'tocayo' :)

... creo que a veces esta complejidad es mejor verla [...]
... no pude hacer que el macro ... funcionara, algo hice mal o del todo no entendi [...]



en realidad... soy yo que se ha 'quedado corto' [en las 'pruebas'] :((
realice las pruebas =>solo<= con codigos 'alfa-numericos' y...
[en la 'realidad'] estas usando codigos [exclusivamente] =>numericos<= :))
[para el caso] solo hay que sustituir las 'triples-comillas-dobles' por dobles-comillas 'simples'
¿en donde?... dentro del bucle 'For Fila = 1 To .Rows.Count ... Next'
existe una 'comparacion' usando el metodo/funcion 'Evaluate' en un 'If ... And ... Then'
=> cambia de: =>& "=""" & .Cells(Fila) & """," &<a 'solamente': =>& "=" & .Cells(Fila) & "," &<=> observa la 'desaparicion' de dos pares de comillas dobles:
despues del signo '=' y antes de la coma ',' :))

¿comenas?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida