Código para automatimatizar tablas en excel.

Tengo un documento Excel en el cual tengo varias tablas. Cada tabla tiene un tipo de incidencias que deben ser resultas y cuando están terminadas, los datos de estas incidencias tengo que enviarlas a una tabla donde son archivadas. El problema es que cada uno de estos procesos lo tengo que hacer manualmente. Entonces me gustaría saber cómo puedo hacer un código, que por ejemplo, diga búscame en la “columna D” de la tabla “Incidencias” todas las filas que contengan la palabra “closed” y córtame todas esas filas y pégamelas a partir de la última fila libre de la tabla “Noviembre” y bórrame las filas de la tabla “Incidencias” que han quedado vacías. Más o menos sería un estilo así. Si alguien pudiera explicarme un poco como hacerlo, estoy un poco perdido en este tema y tengo que hacer un proyecto con la formación que estoy haciendo para un departamento en el que me encuentro ahora y no se ni por dónde empezar.

1 respuesta

Respuesta
1

No me queda claro como son tus tablas así que te paso este ejemplo a lo creo es lo que buscas las imágenes son de un antes y un después de ejecutar la macro que se encuentra abajo de estas imágenes.

Sub cortar_datos()
Set incidencias = Range("incidencias")
Set nov = Range("noviembre")
With incidencias
    .Sort key1:=Range(.Columns(3).Address), order1:=xlDescending, Header:=True
    fila = WorksheetFunction.Match("closed", .Columns(3), 0)
    cuenta = WorksheetFunction.CountIf(.Columns(3), "closed")
    Set datos = .Rows(fila).Resize(cuenta)
    With nov
        f = .Rows.Count:    c = .Columns.Count
        Set destino = .Rows(f + 1).Resize(cuenta, c)
        destino.Value = datos.Value
    End With
    For i = 1 To cuenta
        datos.ListObject.ListRows(fila).Delete
    Next i
End With
End Sub

Muchas gracias por la respuesta. Perdón no lo explique bien. Sí, quiero algo así, pero que busque y copie las filas que contengan en la “D2:Búltima fila” la palabra "Closed", y que me las pegue en otra hoja distinta desde la primera fila que encuentre que este vacía.

Es decir lo mismo que este código pero que me copie los datos de las filas que encuentre con la palabra closed y me la pegue en otra tabla distinta en la primera fila vacía.

No sé, si me explicado bien, voy a intentar hacer un ejemplo y envío una foto.

Muchas gracias por la respuesta.

un saludo.

Adrián

Sería un estilo a esto.

Entonces la macro quedaría así

Sub copiar_datos()
Set ho = Worksheets("incidentes")
Set hd = Worksheets("noviembre")
Set funcion = WorksheetFunction
Set origen = ho.Range("a1").CurrentRegion
Set destino = hd.Range("a1").CurrentRegion
With origen
    .Sort key1:=Range(.Columns(4).Address), order1:=xlDescending, Header:=xlYes
    cuenta = funcion.CountIf(.Columns(4), "closed")
    fila = funcion.Match("closed", .Columns(4), 0)
    Set registros = .Rows(fila).Resize(cuenta)
    With destino
        f = .Rows.Count
        .Rows(f + 1).Resize(cuenta).Value = registros.Value
    End With
    registros.Clear
    Set origen = .CurrentRegion
    .Sort key1:=Range(.Columns(1).Address), order1:=xlAscending, Header:=xlYes
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas