Macro que recorre rango filtrado y copia celdas con datos y genera una lista en una columna de la misma hoja.

Solicito ayuda con una macro que recorra un rango filtrado entre las celdas A5 y C5, hasta la ultima fila con datos, que copie los valores unicos y los pegue en otra columna (X) de la misma hoja para generar una lista de valores no repetidos. Algo como esto:

Range("X:X"). ClearContents
For Each c In Range("A5:C5" & Range("C565000").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
      If c.Value <> "" Then
      C.Copy
         Sheets("Informes"). Range("X65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
   End If
Next c

ActiveSheet.Range("X:X").RemoveDuplicates Columns:=1

Sin embargo este código no me funciona.

1 respuesta

Respuesta
1

No se si solo tienes la hoja "Informes" y ejecutas la macro desde ella.

De todos modos prueba esta

Sub copiar()
Sheets("Informes").Range("X:X").ClearContents
For Each c In Range(Cells(5, 1), Cells(Range("C565000").End(xlUp).Row, 3)).SpecialCells(xlCellTypeVisible)
      If c.Value <> "" Then
      c.Copy
      Sheets("Informes").Range("X65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
   End If
Next c
Sheets("Informes").Range("X:X").RemoveDuplicates Columns:=1
End Sub

Hola, gracias por responder tan pronto. La probé y ya no me arroja error, pero no copia nada en la columna X. Con respecto a la pregunta, solo tengo la hoja informes y si la ejecuto sobre esa.

Ya lo resolví parcialmente, pero al pegar en la columna POR, inicia el pegado desde la segunda fila es decir X2, como puedo hacer para que inicie pegado desde X1

Cambia:

Sheets("Informes"). Range("X65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues

por:

Sheets("Informes").Range("X1").PasteSpecial Paste:=xlValues

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas