Registros Duplicados

14/04/2005 - 21:17 por Andres Ovalle Lopez | Informe spam
Saludos,

Necesito de su ayuda con un tema de Excel,

Resulta que tengo una hoja en la cual tengo 10 mil registros, y quiero saber
cuales de ellos estan repetidos dentro de la misma columna, pero no he
podido saber como hacerlo,

Me pueden dar una ayudita??...
 

Leer las respuestas

#1 Iggv
14/04/2005 - 21:40 | Informe spam
Abre un libro presiona y guarda este codigo en una macro a la que llamaras
con Ctrl + d
Te colocara en la Hoja 2 un resumen donde te dira que un valor X esta
repetido en la hoja 1 en las filas tal, tal y tal
OJO No toma en cuenta lo que este la fila 1 ya que considera que alli hay
titulos, si la hoja dos esta ocupada renombrala y crea una que se llame
Hoja2 o cambia la linea:

Set Resultados = Worksheets("Hoja2").Range("A2:C10000")
por
Set Resultados = Worksheets("Resultado").Range("A2:C10000")
y crea una hoja llamada Resultado (o le pones el nombre que se te ocurre,
simpre creando una hoja idem)
OJO Nro 2 con tantas fila puede tardar un buen rato
Sub Dup()
'
' Dup Macro
' Macro grabada el 09/03/2005 por ignacio
'
' Acceso directo: CTRL+d
'
' Sub BuscarDuplicadasEnVariasHojas()
Dim C As Range
Dim Resultados As Range
Dim res As Variant 'resultado de Match()
Dim j As Long
Dim i As Long
Dim k As Long
Dim LLaves As Variant
Dim Veces As Variant
Dim Direcciones As Variant
Dim miRng As Range 'variable para el rango a evaluar.

Set Resultados = Worksheets("Hoja2").Range("A2:C10000")

'Establece el rango a evaluar para la hoja.
With Worksheets("Hoja1")
Set miRng = .Range(.Cells(2, 1), _
.Cells(.Range("A65536").End(xlUp).Row, 1))
End With

For Each C In miRng
'saltar celdas con error
If Not IsError(C.Value) Then
'saltar celdas vacias
If C.Value <> "" Then
If j = 0 Then
res = CVErr(xlErrNA)
ReDim LLaves(1 To 1)
ReDim Veces(1 To 1)
ReDim Direcciones(1 To 1)
Else
res = Application.Match(C.Value, LLaves, 0)
End If
If IsError(res) Then
j = j + 1
ReDim Preserve LLaves(1 To j)
ReDim Preserve Veces(1 To j)
ReDim Preserve Direcciones(1 To j)
LLaves(j) = C.Value
Veces(j) = 1
Direcciones(j) = LaDireccion(C)
Else
Veces(res) = Veces(res) + 1
Direcciones(res) = Direcciones(res) & " - " _
& LaDireccion(C)
End If
End If
End If
Next C

'Borrar resultados anteriores
Resultados.ClearContents

'Mostrar resultados
k = 1
For i = 1 To j
If Veces(i) > 1 Then
Resultados(k, 1) = LLaves(i)
Resultados(k, 2) = Veces(i)
Resultados(k, 3) = Direcciones(i)
k = k + 1
End If
Next i

Resultados.Resize(k, 3).Sort key1:=Resultados.Cells(1, 2), _
order1:=xlDescending, header:=xlNo
End Sub

Private Function LaDireccion(C As Range) As String
Dim s As String
Dim i As Integer
s = C.Address(False, False, xlA1, True)
i = InStr(1, s, "]")
LaDireccion = Mid(s, i + 1)
End Function

"Andres Ovalle Lopez" escribió en el mensaje
news:
Saludos,

Necesito de su ayuda con un tema de Excel,

Resulta que tengo una hoja en la cual tengo 10 mil registros, y quiero


saber
cuales de ellos estan repetidos dentro de la misma columna, pero no he
podido saber como hacerlo,

Me pueden dar una ayudita??...



Preguntas similares