valores unificar una tabla repetidos repetidas registros quitar para macro lista filas extraer encontraron eliminar duplicados dentro datos condicion con como celdas buscar borrar excel vba excel-vba

unificar - quitar duplicados excel con condicion



excel: comprueba si hay filas duplicadas basadas en 3 columnas y mantén una fila (1)

Esto podría ser mucho pedir, pero me pregunto si lo siguiente es posible. todo esto se basa en mi pregunta inicial sobre el rango de copia y los valores de pegado en el rango específico de otra hoja

Tengo una hoja que contiene aproximadamente 12 columnas donde se copia el mismo tipo de datos, lo que significa que dos o más filas podrían contener exactamente los mismos datos; sin embargo, si pudiera verificar si hay duplicados, estaría basado en 3 columnas específicas.

No quiero usar el Autofiltro ni el Formato condicional para esta tarea porque la hoja puede contener cientos o miles de filas y quiero poder ubicar duplicados, eliminarlos y conservar solo un original. También he leído otras publicaciones aquí sobre la eliminación de duplicados en función de las condiciones de la columna, pero hasta ahora ninguno me ha funcionado.

El rango de datos es de A a P y Abajo y las 3 columnas que identificarían un duplicado son A (que es numérica, una ID), B (que es una fecha) y P (que es una cadena de texto). De dónde provienen estos datos, siempre tendrá el mismo formato y siempre se colocarán en las mismas columnas, razón por la cual si A, B, P son iguales, entonces se considera un duplicado.

Gracias por la ayuda por adelantado.


Este código funciona para mí ( lastrow basado en esto asnwer por @SiddharthRout):

Sub test() Dim lastrow As Long With ThisWorkbook.Worksheets("Sheet1") If Application.WorksheetFunction.CountA(.Cells) <> 0 Then lastrow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else lastrow = 1 End If ''Array(1, 2, 16) means 1 - for A, 2 for B and 16 for P columns .Range("A1:P" & lastrow).RemoveDuplicates Columns:=Array(1, 2, 16), _ Header:=xlYes End With End Sub