Comprender código VBA objeto range

Tengo el siguiente trozo de código que he tomado de una macro.

Sub Cuentas_unicas()
'filtramos unicos
fin = Range("g65536").End(xlUp).Row

Range("G7:G" & fin).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"L7"), Unique:=True
End Sub

Pero no logro adaptarlo a lo que quiero ya que no lo entiendo en su totalidad. A pesar de haber buscado la ayuda sobre el objeto range no me queda claro que hace con el Range("G7:G" & fin) ya que si cambio el código a:

fin = Range("A65536").End(xlUp).Row

Range("A7:A" & fin)

Me da error.

1 respuesta

Respuesta
1

Range(...) indica el rango de acción, puede ser fijo o dinámico y depender de alguna variable como en tu caso.

No debiera darte ningún problema tal como tratas de utilizarlo:

fin = Range("A65536").End(xlUp).Row

Range("A7:A" & fin)

Pero hay que ver qué valor está tomando 'fin', por lo tanto sería bueno que coloques un pto de interrupción en la 2da línea o directamente un mensaje entre las 2 (luego lo retiras)

fin = Range("A65536").End(xlUp).Row

MsgBox fin

Range("A7:A" & fin)     'aquí falta indicarle què hacer con el rango tal como se indica en la línea original;

Range("G7:G" & fin).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "L7"), Unique:=True

Probalo y verificá en qué linea te da error. Luego me comentas.

Sdos

Elsa

Gracias. Ya funciona. Pero no del todo bien, al poner el flag Unique:=True ¿No debería de obviar información repetida? Si en la columna A mi listado es del tipo:

Dato1

Dato2

Dato1

Dato3

Dato1

Me repite 2 veces en el listado Dato1 (teniendo en la columna 3 veces Dato1 solo lo repite 2 veces). ¿Me podría ayudar a encontrar mi error?

Esto debe ser porque considera el primer dato como título. Observa en mi imagen que si bien los datos empiezan en A7, coloqué la instrucción de filtro a partir de A6.

Las instrucciones para este ejemplo quedaron así:

Sub filtrando()
'x Elsamatilde
fin = Range("A65536").End(xlUp).Row
Range("A6:A" & fin).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("L7"), Unique:=True
End Sub

PD) No dejes de visitar la sección Macros y Ejemplos de mi sitio.

Sdos!

Te recuerdo que la consulta sigue abierta. Si has visto la imagen y el código ya habrás resuelto tu problema. No olvides valorarla para darla por cerrada.

Sdos!

¡Gracias! 

No es tu primer consulta así que ya sabrás que debes valorarla para darla por finalizada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas