Jump to content

Archived

This topic is now archived and is closed to further replies.

richicho24

Elementos repetidos en fila, ayuda

Recommended Posts

Querida comunidad necesito su ayuda en la siguiente tarea, se los agradeceria mucho ya que llevo semanas intentando pero no encuentro una manera factible que me ayude sintetizar mi tarea.

Tengo una base de datos de 45 234 filas con 22 columnas (desde A hasta T), todas estas se encuentran llenas. Cada fila representa información de un reporte que tiene que ser UNICO, no pueden haber duplicados. El tema es que los operadores de manera errónea generan 3 o 4 reportes para un mismo caso.

Por ello, el objetivo de esta macro es CONTABILIZAR TODOS LOS REPORTES sin tomar en cuenta aquellos duplicados con información repetida UNICAMENTE de las columnas D-E-F-J-K-Q-R. Adjunto una imagen de referencia de 2 filas que representan un mismo reporte debido a información repetida de las columnas mencionadas. Tomándo en base este ejemplo, necesito que esto se replique en toda la base de datos de manera que tenga 1 columna donde me contabilize el reporte unico y su duplicado como 0. Como extra, si fuera posible mostrar otra columna que diga OK y DUPLICADO para verificar la información (opcional), estaria bien.

Luego con la columna de CONTEO con 1 y 0 se tiene que crear una tabla dinámica, pero esto es manual, no necesito macro para esto. ESTE OBJETIVO DE LA MACRO ES TENER TODA LA BASE DE DATOS SETEADA CON 1 Y 0.

En el adjunto encontrarán el excel. La columna "Q" de Serial Number fue filtrado en orden para mostrar los pares de duplicados. La información original viene desordenada pudiendose encontrar el duplicado en diferentes filas no necesariamente consecutiva. 

Agradezco de antemano su apoyo comunidad.

Gracias !!!!!!!!

Base de Datos - Copy - Copy.xlsx

Link to post
Share on other sites
24 minutes ago, johnmpl said:

Hola @richicho24 y bienvenido al foro.

Revisa el adjunto.  Lo que pides se puede solucionar con formulación.  Si no te interesan las mismas, luego puedes copiar y pegar como valores.  ¡Bendiciones!

Base de Datos - Copy - Copy.zip

John, muchas gracias por el atajo con formula, no me había puesto a pensar esa manera de seleccionar las celdas hacia arriba, lo que yo hacía era seleccionar todas las columnas condicionales como D:D, E:E, F:F ... etc.

Bajo ese esquema de fórmula desarrolle la siguiente macro pero no se agregar la funcion "N" que convierte a TRUE O FALSE, una ayudita please

Sub Go1()
Dim i As Double
Dim final As Double

'Calculamos el rango de los datos en la columna A
Worksheets("Sheet1").Select
final = Application.CountA(Worksheets("Sheet1").Range("a:a"))

    For i = 2 To final
    
    'Contamos las veces que se repiten cada uno de los nombres en el rango seleccionado
    CIM_case = Worksheets("Sheet1").Cells(i, 4).Value
    Turbine_number = Worksheets("Sheet1").Cells(i, 5).Value
    Report_type = Worksheets("Sheet1").Cells(i, 6).Value
    Created_date = Worksheets("Sheet1").Cells(i, 10).Value
    Inspection_date = Worksheets("Sheet1").Cells(i, 11).Value
    Blade_serial = Worksheets("Sheet1").Cells(i, 17).Value
    Fault_Area = Worksheets("Sheet1").Cells(i, 18).Value
    
    Worksheets("Sheet1").Cells(i, 21).Value = Application.CountIfs( _
    Worksheets("Sheet1").Range("D1:D" & final), CIM_case, _
    Worksheets("Sheet1").Range("E1:E" & final), Turbine_number, _
    Worksheets("Sheet1").Range("F1:F" & final), Report_type, _
    Worksheets("Sheet1").Range("J1:J" & final), Created_date, _
    Worksheets("Sheet1").Range("K1:K" & final), Inspection_date, _
    Worksheets("Sheet1").Range("Q1:Q" & final), Blade_serial, _
    Worksheets("Sheet1").Range("R1:R" & final), Fault_Area) < 2
    
    Next
   

End Sub

________________

Si existe una manera mas práctica via macro, te agradeceria saber.

Saludos

 

 

 

 

Link to post
Share on other sites

¡Hola de nuevo!

Puedes usar la siguiente macro:

Sub ConteoAndStatus()
    Dim uf&
    
    uf = Range("A" & Rows.Count).End(xlUp).Row
    
    Application.ScreenUpdating = False
    Range("V2:V" & uf).Formula = "=N(COUNTIFS(D$2:D2,D2,E$2:E2,E2,F$2:F2,F2,J$2:J2,J2,K$2:K2,K2,Q$2:Q2,Q2,R$2:R2,R2)<2)"
    Range("W2:W" & uf).Formula = _
        Replace("=IF(COUNTIFS(D$2:D$#,D2,E$2:E$#,E2,F$2:F$#,F2,J$2:J$#,J2,K$2:K$#,K2,Q$2:Q$#,Q2,R$2:R$#,R2)>1,""Duplicado"",""OK"")", "#", uf)
    With Range("V2:W" & uf)
        .Copy: .PasteSpecial xlPasteValues
    End With
    
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

¡Bendiciones!

Link to post
Share on other sites

Hola @johnmpl y @richicho24

Excelente aporte John, estaba leyendo y tratando de entender la solicitud y llegaron tus respuestas, y solo tengo una pregunta de acuerdo a lo que había entendido, no primero se tendría que orden por la columna "Q", esta haciendo una Macro y puse:

Range("A1", Cells(uF, "V")).Sort Key1:=Range("Q1"), Order1:=xlAscending, Header:=xlGuess

Y posterior obtener los duplicados,

Saludos !!!

Mucha Suerte  @richicho24

Link to post
Share on other sites
Hace 18 horas, Max2005 dijo:

no primero se tendría que orden por la columna "Q", esta haciendo una Macro

Hola @Max2005

No es necesario realizar la ordenación.  La formulación presentada toma los repetidos tal cual como estén.  Si hay un repetido en la parte inferior, le coloca un 0.  La ordenación por la columna "Q" es solamente para ver de forma visual los datos duplicados juntos.  ¡Bendiciones!

Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




  • Posts

    • Hola Cristian1985 Buena aporte , voy a considerar tu propuesta gracias Aqui adjunto el archivo trabajo del tema en cuestion , la idea inicial q tenia era a una tabla dinamica agregar talvez una columna calculada o algo por estilo que haga el calculo de la suma del año  Producto.xlsx
    • hola expertos buenas tardes mi idea es la siguiente en este libro1. un mensaje que me diga que celdas desea marcar de color rojo en la hoja22. de acuerdo al listado numerico de la columna A de hoja actual enviar el listado de numeros que cumple con la posicion del color de la hoja2 Libro1.xlsm
    • Recién releeo lo que escribí, 😄  Christian, lo que quise decir, es que lo que entendí de la definición de su problema, fue lo mismo que tu (al ver como lo resolviste), pero su ejemplo  nada, porque no corresponde a lo que definió. 😂 jaja.. ya mejor no sigo... 😷😵    
    • Ya casi lo tengo, pero no será hasta mañana, que aquí donde estoy ya es hora de cenar. 😉
    • Buenos días. He preparado una plantilla para organizar los turnos de trabajo con una duración mensual. Me gustaría saber si es posible que a la hora de imprimirlo, se imprimiese por semanas, manteniendo las tres primeras columnas, donde apararecen los distintos turnos y lugares de trabajo, y si, por ejemplo, la primera semana del mes empieza en miercoles, el rango empiece en dicho dia hasta el domingo. Gracias de antemano por vuestra ayuda. Saludos, Ignacio Modelo2.xlsm
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy