Macro eliminar fila y llevar datos a otra hoja

Tengo un libro de EXCEL
La hoja 1 (datos base) es en donde cargo toda la información. Las hojas 2 a la 3 es donde tengo INFO de la hoja 1, que extraigo mediante fórmulas.
Lo que necesito es que en la hoja 4 se copien los datos de la hoja 1 que yo marque con una palabra específica y a su vez estos datos se eliminen de la hoja 1 pero se mantengan en la 4.

Encontré una MACRO, pero al ser inexperto no se como modificarla para mi planilla.

En el ejemplo se eliminan las filas si se encuentra un código, yo lo que necesito es que se elimine si encuentra la palabra "IDENTIFICADO" este valor se encuentra en la hoja 1 (columna F, filas activas a partir de la 3) y las filas a eliminar en la hoja 2 y hoja 3.

Este es el ejemplo:

Sub BuscarDatosEliminaFila()
Application.ScreenUpdating = False
On Error Resume Next
DisplayAlerts = False
Dim uf As String
Dim conta As Integer
Sheets("Hoja2").Range("A1:H100").Copy Destination:=Sheets("Hoja1").Cells(1, 1)
f = 2
f1 = 2
uf = Sheets("Hoja1").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Hoja1").Range("D" & f1 & ":H" & uf).Interior.Pattern = xlNone
Sheets("Hoja1").Select
Cells(f, 1).Select
While Cells(f, 1) <> Empty
dato = Cells(f, 1)

While Cells(f1, 4) <> Empty
dato1 = Cells(f1, 4)
If dato = dato1 Then
Sheets("Hoja1").Range("D" & f1 & ":H" & f1).Delete Shift:=xlUp
conta = conta + 1
f2 = f2 + 1
End If
f1 = f1 + 1
Wend
f1 = 2
f = f + 1
Wend

uf = Sheets("Hoja2").Range("C" & Rows.Count).End(xlUp).Row
Sheets("Hoja2").Range("C" & 2 & ":E" & uf).NumberFormat = "#,##0.00"
If conta = 0 Then
MsgBox ("No se encontró el código buscado"), vbInformation, "AVISO"
Else
MsgBox ("Se eliminaron " & conta & " registros"), vbInformation, "AVISO"
End If
DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

1 Respuesta

Respuesta
3

Entiendo que debo leer los registros de la hoja1 y si en la columna "F" existe la palabra "IDENTIFICADO", entonces copio el registro en la hoja4; y elimino el registro de la hoja1.

Pero lo que no entiendo es cómo identificar cuál registro de la hoja2 y cuál registro de la hoja3 quieres eliminar

Este es tu comentario:

Y las filas a eliminar en la hoja 2 y hoja 3.

Podrías explicarlo con un par de ejemplos.

Dante, muchas gracias por responder.

Las filas a eliminar en las hojas 2 y 3 son las que se lean también como identificado, fue un error de tipeo.

Lo que no quiero es tener que agregar una columna en las hojas 2 y 3 para que se lea dicho código, ¿existe la posibilidad de que se lea desde la hoja 1?

Agradecería tu ayuda

Ahora entendí menos.

Podrías explicar lo que necesitas utilizando imágenes de lo que tienes y de lo que esperas como resultado.

Utiliza una imagen para cada una de las hojas que intervienen en tu proceso.

Importante:

Pon una imagen mostrando cómo están tus datos antes de la macro y otra imagen mostrando cómo deberían quedar los resultados después de la macro.

Así se ve la hoja ORIGEN antes de la macro

Así se ve la hoja DESTINO antes de la macro

hoja ORIGEN después de la MACRO

hoja DESTINO después de la MACRO

Te anexo la macro.

Cambia en la macro "Hoja1" y "Hoja4" por los nombres de tus hojas

Sub Copiar_Filas()
'Por Dante Amor
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    '
    Set h1 = Sheets("Hoja1")    'hoja origen
    Set h4 = Sheets("Hoja4")    'hoja destino
    u4 = h4.Range("F" & Rows.Count).End(xlUp).Row + 1
    For i = 3 To h1.Range("F" & Rows.Count).End(xlUp).Row
        If UCase(h1.Cells(i, "F").Value) = "IDENTIFICADO" Then
            h1.Rows(i).Copy
            h4.Rows(u4).PasteSpecial xlValues
            u4 = u4 + 1
        End If
    Next
    For i = h1.Range("F" & Rows.Count).End(xlUp).Row To 3 Step -1
        If UCase(h1.Cells(i, "F").Value) = "IDENTIFICADO" Then
            h1.Rows(i).Delete
        End If
    Next
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    '
    MsgBox "Fin"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas