Saltar al contenido

eliminar repetidos


Recommended Posts

publicado

hola jhon fredy rodriguez  dejo una posible solución espero que te funcione

https://www.extendoffice.com/es/documents/excel/3328-excel-keep-only-one-duplicate.html

Sub RemoveAllDeplicateButOne()
    Dim LR As Long:
    LR = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Range("A1:CY" & LR).RemoveDuplicates Columns:=1, Header:=Name
End Sub

saludo isidrod

publicado

Con la grabadora se obtiene esto:

    ActiveSheet.Range("$A$1:$CY$42").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, _
        7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, _
        34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, _
        60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, _
        86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103), Header:=xlNo

 

publicado

la idea es eliminar los repetidos que estan en ese rango "a1:cy42" pero con la condicion de dejar solo uno de esos numeros repetidos y eliminar el resto 

 

publicado
Hace 16 minutos , jhon fredy rodriguez dijo:

la idea es eliminar los repetidos que estan en ese rango "a1:cy42" pero con la condicion de dejar solo uno de esos numeros repetidos y eliminar el resto 

Pero la idea es que vas a empezar a revisar los números por FILAS? o por COLUMNAS?, Empiezas con el numero 2502 y revisas hacia abajo COLUMNA o hacia la derecha FILAS?

Saludos.

publicado

este codigo hace lo que busco elimina los repetidos por columna  dejando uno solo de ellos pero como modificarlo para que elimine los repetidos de acuerdo al rango a1:cy42 dejando uno de ellos

Sub Macro1()
Dim i%
Application.ScreenUpdating = False
For i = 1 To 35
  Columns(i).RemoveDuplicates Columns:=1, Header:=xlNo
Next
Application.ScreenUpdating = True
End Sub
 

publicado
Hace 1 minuto , Leopoldo Blancas dijo:

Pero la idea es que vas a empezar a revisar los números por FILAS? o por COLUMNAS?, Empiezas con el numero 2502 y revisas hacia abajo COLUMNA o hacia la derecha FILAS?

Saludos.

maestro hacia la derecha seria lo mejor 

publicado

Algo lenta, pero funciona:

Sub EliminarDuplicados()
Dim Rango As Range
With ActiveSheet
   Set Rango = .UsedRange
   For x = 1 To .UsedRange.Rows.Count
      Application.StatusBar = "Analizando fila " & x
      For y = 1 To .UsedRange.Columns.Count
         If Not .Cells(x, y) = "" Then
            If WorksheetFunction.CountIf(Rango, .Cells(x, y)) > 1 Then
               .Cells(x, y).Delete
            End If
         End If
      Next
   Next
End With
End Sub

Se puede mejorar, pero estoy harto de resolverte las mismas consultas, una y otra vez. :angry:

publicado
Hace 2 horas, jhon fredy rodriguez dijo:

este codigo hace lo que busco elimina los repetidos por columna  dejando uno solo de ellos pero como modificarlo para que elimine los repetidos de acuerdo al rango a1:cy42 dejando uno de ellos

Se puede hacer desde Power Query y es muy eficiente

 

Saludos 

publicado
Hace 48 minutos , Antoni dijo:

Algo lenta, pero funciona:


Sub EliminarDuplicados()
Dim Rango As Range
With ActiveSheet
   Set Rango = .UsedRange
   For x = 1 To .UsedRange.Rows.Count
      Application.StatusBar = "Analizando fila " & x
      For y = 1 To .UsedRange.Columns.Count
         If Not .Cells(x, y) = "" Then
            If WorksheetFunction.CountIf(Rango, .Cells(x, y)) > 1 Then
               .Cells(x, y).Delete
            End If
         End If
      Next
   Next
End With
End Sub

Se puede mejorar, pero estoy harto de resolverte las mismas consultas, una y otra vez. :angry:

maestro antoni me disculpo .....pero me sale error en esta linea 

If Not .Cells(x, y) = "" Then

publicado

@jhon fredy rodriguez

Revisando tus preguntas... efectivamente haz preguntado varias veces sobre lo mismo o parecido... no crees que ya es hora de estudiar un poco...???

Te envió mi solución... pero es la última de mi parte.

image.gif.ee8d9ddea1e6be12895ad851e3599f65.gifMIENTRAS DOMINO PQ... y PV....POR LAS PIEDRITAS...

Sub EliminarDuplicados_LBV()
Dim Celda As Range, Cel As Range, t
    t = Time
    Application.ScreenUpdating = False
    For Each Celda In Range("A1:CY42")
        If Celda.Value <> "" Or Celda.Value <> Empty Then
            For Each Cel In Range("A1:CY42")
                If Cel.Value = Celda.Value Then
                    If Cel.Address <> Celda.Address Then
                        Cel.Value = ""
                    End If
                End If
            Next Cel
        End If
    Next Celda
    Application.ScreenUpdating = True
    MsgBox Time - t
End Sub

Saludos.

P.D.: ES MUY LENTA... PERO NO DEJA DUPLICADOS.

publicado
Hace 4 horas, jhon fredy rodriguez dijo:

Sub Macro1()
Dim i%
Application.ScreenUpdating = False
For i = 1 To 35
  Columns(i).RemoveDuplicates Columns:=1, Header:=xlNo
Next
Application.ScreenUpdating = True
End Sub

Este código lo hizo Cacho R... CUANDO VAS A HACER TU TUS INTENTOS....?

ERES DE LOS QUE SOLO COPIAN Y PEGAN Y SI JALA BIEN Y SI NO SIGO PREGUNTANDO???   CREO QUE SI.

Saludos y SUERTE!!!

publicado
Hace 13 horas, Leopoldo Blancas dijo:

@jhon fredy rodriguez

Revisando tus preguntas... efectivamente haz preguntado varias veces sobre lo mismo o parecido... no crees que ya es hora de estudiar un poco...???

Te envió mi solución... pero es la última de mi parte.

image.gif.ee8d9ddea1e6be12895ad851e3599f65.gifMIENTRAS DOMINO PQ... y PV....POR LAS PIEDRITAS...


Sub EliminarDuplicados_LBV()
Dim Celda As Range, Cel As Range, t
    t = Time
    Application.ScreenUpdating = False
    For Each Celda In Range("A1:CY42")
        If Celda.Value <> "" Or Celda.Value <> Empty Then
            For Each Cel In Range("A1:CY42")
                If Cel.Value = Celda.Value Then
                    If Cel.Address <> Celda.Address Then
                        Cel.Value = ""
                    End If
                End If
            Next Cel
        End If
    Next Celda
    Application.ScreenUpdating = True
    MsgBox Time - t
End Sub

Saludos.

P.D.: ES MUY LENTA... PERO NO DEJA DUPLICADOS.

muchas gracias

 

publicado

Holas! 

John: no se si quedó resuelto o no quedaste convencido, pero de todas formas, te adjunto otra solución con VBA, de hecho van 2 opciones 

El proceso con tus 103 columnas, no se tarda ni un segundo, así que no vas a tener problemas con el rendimiento

El método utilizado es trabajando los datos en memoria, en la mayoría de casos es muy eficiente!, incluso más rápida que la de @Manuel_Mendoza con Power Query :P :D

Comentas para finalizar el tema

 

Saludos 

Extraer unicos cada columna Vba_GP.zip

  • 4 weeks later...
publicado
En 12/1/2019 at 22:13 , Gerson Pineda dijo:

Holas! 

John: no se si quedó resuelto o no quedaste convencido, pero de todas formas, te adjunto otra solución con VBA, de hecho van 2 opciones 

El proceso con tus 103 columnas, no se tarda ni un segundo, así que no vas a tener problemas con el rendimiento

El método utilizado es trabajando los datos en memoria, en la mayoría de casos es muy eficiente!, incluso más rápida que la de @Manuel_Mendoza con Power Query :P :D

Comentas para finalizar el tema

 

Saludos 

Extraer unicos cada columna Vba_GP.zip

maestro gerson el ultimo codigo del maestro leopoldo me funciona no me importa el tiempo pero podremos modificar el codigo ya que me ocasiona otro problema con un codigo de mi libro eliminando los repetidos y dejando la celda en blanco 

le agradeceria mucho

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.