Filtrar, copiar y pegar datos de una hoja a otra

Sigo con el proyecto de inventario. Ahora necesito nuevamente de su ayuda, todo lo consolidado debo filtrarlo en la columna A

Rango de Copiado: hoja "Consolidado", celdas X 5 : Y5, el pegado (hoja según criterio) en la celda B8:C8

1) Si en la cadena de texto existe "EQ" copiar de la hoja "CONSOLIDADO" y pegar en la hoja "EQUIPO"

2) Si en la cadena de texto existe "MQ" copiar de la hoja "CONSOLIDADO" y pegar en la hoja "MAQUINARIA"

3) Si en la cadena de texto existe "ME" copiar de la hoja "CONSOLIDADO" y pegar en la hoja "MOBILIARIO"

4) Si en la cadena de texto existe "OB" copiar de la hoja "CONSOLIDADO" y pegar en la hoja "OBRAS"

5) Si en la cadena de texto existe "VH" copiar de la hoja "CONSOLIDADO" y pegar en la hoja "VEHICULOS"

6) Si en la cadena de texto existe "OT" copiar de la hoja "CONSOLIDADO" y pegar en la hoja "OTROS"

7) Si en la cadena de texto no existe ninguno de las anteriores, crear una hoja "sin_clasificar".

Te anexo una imagen a ver si es más fácil.

Primera imagen: Lo que voy a copiar.

Segunda: El formato que debo llenar.

Segura de poder contar con su ayuda.

1 Respuesta

Respuesta
1

Si te entendí bien sería algo así:

Dim wSheet As Worksheet
'fila a partir de la que empezamos a tener datos relevantes de la hoja CONSOLIDADO
a = 2
'bucle mientras tengamos valores en la columna X
Do While Worksheets("CONSOLIDADO").Range("x" & a).Value <> ""
    'buscamos cadena de texto
    If InStr(1, Worksheets("CONSOLIDADO").Range("x" & a).Value, "EQ") > 1 Then
        'copiar
        Worksheets("CONSOLIDADO").Range("x" & a & ":y" & a).Copy
        'identificar ultima fila con datos
        If Worksheets("EQUIPO").Range("B2").Value = "" Then
            R = 2
        Else
            R = Worksheets("EQUIPO").Range("B1").End(xlDown).Row + 1
        End If
        'pegar
        Worksheets("EQUIPO").Range("B" & R).PasteSpecial xlPasteAll
    ElseIf InStr(1, Worksheets("CONSOLIDADO").Range("x" & a).Value, "MQ") > 1 Then
        Worksheets("CONSOLIDADO").Range("x" & a & ":y" & a).Copy
        If Worksheets("MAQUINARIA").Range("B2").Value = "" Then
            R = 2
        Else
            R = Worksheets("MAQUINARIA").Range("B1").End(xlDown).Row + 1
        End If
        Worksheets("MAQUINARIA").Range("B" & R). PasteSpecial xlPasteAll
    ElseIf InStr(1, Worksheets("CONSOLIDADO").Range("x" & a). Value, "ME") > 1 Then
        '.
        '.
        '.
        '.
    Else    'CASO DE NO ENCONTRAR NINGUNA DE LAS CADENAS ANTERIORES
        On Error Resume Next
        Set wSheet = Sheets("sin_clasificar")
        If wSheet Is Nothing Then
            Worksheets.Add.Name = "sin_clasificar"
        End If
        Worksheets("CONSOLIDADO").Range("x" & a & ":y" & a).Copy
        If Worksheets("sin_clasificar").Range("B2").Value = "" Then
            R = 2
        Else
            R = Worksheets("sin_clasificar").Range("B1").End(xlDown).Row + 1
        End If
        Worksheets("sin_clasificar").Range("B" & R).PasteSpecial xlPasteAll
    End If
    a = a + 1
Loop

Observa que solamente he hecho los casos de "EQ", "MQ" y sin clasificar. Completar los demás te resultará muy sencillo, solo copia y pega y reemplaza donde debas el nombre de hoja y la condición.

Victor, me da error en esta línea, ¿qué será?

Do While Worksheets("CONSOLIDADO").Range("x" & a).Value <> ""

Revisa el nombre de la hoja que sea el mismo "CONSOLIDADO" y revisa que hayas pegado correctamente la línea anterior a=2

Yo lo he probado y funciona..

Víctor, he revisado. Pero no determino el error. :(

Indica el error que te da

Modifique

la:
'fila a partir de la que empezamos a tener datos relevantes de la hoja CONSOLIDADO
a = 5,

Ahora no me da ningún error pero no copia ni pega.

¿por que sera?

Víctor, he observado que si colocó en la columna POR = "ME", copia y pega

Sin embargo, la columna donde realizó el filtro es alfanumérica ( y es el resultado de una fórmula) y tiene la siguiente estructura

XX-XX-XX-XX-XX-XX-XX-XX_ME_XXXXX_XXXXX

ME#¡REF!

Creo que entonces, debería de ser filtro: si CONTIENE "ME"

3) Si en la cadena de texto existe "ME" copiar (columna x:y) de la hoja "CONSOLIDADO" y pegar (columna b:c) en la hoja "MOBILIARIO"

¿Me exliqué? ¿Puedes por favor ayudarme a corregir?

No, no se entiende..

En la columna ("X") donde realizó el filtro es alfanumérica  y tiene la siguiente estructura

XX-XX-XX-XX-XX-XX-XX-XX_ME_XXXXX_XXXXX

No hace nada.

Si borro la estructura de la celda y dejo sólo:

"ME"

Me da este error:

ME#¡REF!

Ahora?

Sigo sin comprender, lo lamento. Indica un correo electrónico si quieres donde te pueda escribir y me mandas el archivo y reviso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas