Cómo programar un macro que filtre una determinada categoría de una columna de una tabla

He aprendido valiosas cosas en este foro y por eso he decidido preguntar aquí lo siguiente:

Tengo un cúmulo de datos que mediante un macro, los convierte en una tabla (1). El problema es que necesito copiar datos de esa tabla una vez filtrados y pegarla en otra tabla (2) en otra hoja. Grabé el macro y todo funcionaba bien con el acumulado de ese día pero al hacer pruebas con diferentes cantidades de información en la tabla 1, me di cuenta de lo siguiente:

-El filtro que debe realizar, lo guardó con el nombre del filtro pero TAMBIÉN CON LA POSICIÓN que esta categoría tiene en el listado del filtro. E.g:

      *Dispatched

      *Closed

     *Assigned

     *Submitted

Si quiero que guarde el filtro de Verde, el comando graba "Dispatched" pero también "Field=6". La cuestión es que no todos los días tengo "Dispatched" en la 1a posición por lo que necesito que se fije solamente en el nombre de la categoría y no en su lugar en lista.

-En otra columna, quiero que el filtro me muestre todas las de la lista a excepción de una (celdas en blanco) pero vuelve a grabar su posición en lista que es variable día con día.

-Por último, tampoco sé cómo hacer para que me pegue lo copiado de esta tabla 1, al final de la tabla 2, para así continuar el acumulado. Lo mismo sucede que guarda la fila de la celda y no el hecho de que ahí termina la información de la tabla.

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$G$10000"), , xlYes).Name = _

"Table9"
Range("Table9[#All]").Select
ActiveSheet.ListObjects("Table9").TableStyle = "TableStyleLight2"
ActiveSheet.ListObjects("Table9").Range.AutoFilter Field:=2, Criteria1:= _
"Dispatched"
Columns("D:D").Select
Selection.delete Shift:=xlToLeft
Columns("C:C").Select
Selection.TextToColumns Destination:=Range( _
"Table9[[#Headers],[ETA Set For Date]]"), DataType:=xlFixedWidth, FieldInfo _
:=Array(0, 3), TrailingMinusNumbers:=True
ActiveSheet.ListObjects("Table9").Range.AutoFilter Field:=6, Criteria1:= _
"<>"
Range("A2:E2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection. Copy

1 respuesta

Respuesta

Yo crearía un formulario que busque y pegue la información

Cargar un listbox con Datos que cumplen con una Condición Excel Vba

Prueba a ver si te resulta

En la tuya creo que con solo cambiar "Dispatched" por valor

Y al principio de la macro

pon esttos valor = range("a1").value con estos cuando escribas dispatched buscarara eso 

Y si escribe closed buscar eso en la columna

Si te silve no olvides valorar sino sabe este es mi correo [email protected] para adtarle una macro

Gracias. Y para hacer que peue los resultados en una tabla de otra hoja pero hasta el final?

Usaste el método del formulario seria este un botón

For X = 0 To ListBox1.ListCount - 1
Range("a65000").End(xlUp).Offset(1, 0).Select
ActiveCell = ListBox1.List(X, 0)
ActiveCell.Offset(0, 1) = ListBox1.List(X, 1)
ActiveCell.Offset(0, 2) = ListBox1.List(X, 2)
Next

Dependiendo del la cantidad de información tengas en el listbox

Recuendad valorar si te silve la otra pregunta y este si es posible

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas