Hola necesito una macro en excel para copiar datos de una hoja a otra pero determinadas columnas

Tengo una hoja con datos desde B3 hasta AL108 y la ultima fila es variable y se va hasta la 350, todas la filas tienen datos, pero necesito una macro que me busque el criterio PEDRO CASTRO de la columna J desde la fila 3 hasta la ultima fila que contenga datos y me copie a a hoja 2 desde la columna B3 todos los datos que se encuentran con este criterio

Ejem. Esta así hoja1:

A B C D E F G H I J K

1

2

3 0001 AS TY UY 12 56 12 AA TT QQ MM

4 0002 DE GT JK 23 67 23 SS YY WW MN

5 0003 FG HG LM 34 78 34 DD SS EE VC

6 0004 GH JU NB 45 89 45 FF GG RR SE

debe quedar asi en la hoja2:

Columnas de la hoja1 que se deben copiar(a,d,g,i,j,k)

A B C D E F
1
2
3 0001 UY 12 TT QQ MM
4 0002 JK 23 YY WW MN
5 0003 LM 34 SS EE VC
6 0004 NB 45 GG RR SE

Ejemplo relativo a lo ue necesito, alguien me puede ayudar por favor???

Respuesta
1

No identifico cual es el criterio de Pedro Castro viendo los datos.

¿Puedes explicarlo mejor?

Hola, con las dIscuLpas del caso

Ejem. esta así hoja1:
A B C D E F G H I J K
1
2
3 0001 AS TY UY 12 56 12 AA TT QQ MM
4 0002 DE GT JK 23 67 23 SS YY Pedro Castro MN
5 0003 FG HG LM 34 78 34 DD SS EE VC
6 0004 GH JU NB 45 89 45 FF GG Pedro Castro SE

debe quedar asi en la hoja2:
Columnas de la hoja1 que se deben copiar(a,d,g,i,j,k) teniendo en cuenta que el rango es B3:AL 300 y varia de acuerdo a los meses hasta la ultima fila de AL

A B C D E F
1
2
3 0002 JK 23 YY Pedro Castro MN
4 0004 NB 45 GG Pedro Castro SE

Esta es la macro que necesitas

Sub proceso()
'por luismondelo
fila = 3
Sheets("hoja1").Select
Range("j3").Select
Do While ActiveCell.Value <> ""
If UCase(ActiveCell.Value) = "PEDRO CASTRO" Then
ActiveCell.Offset(0, -9).Copy
Sheets("hoja2").Cells(fila, 1).PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -6).Copy
Sheets("hoja2").Cells(fila, 2).PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -5).Copy
Sheets("hoja2").Cells(fila, 3).PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -1).Copy
Sheets("hoja2").Cells(fila, 4).PasteSpecial Paste:=xlValues
Sheets("hoja2").Cells(fila, 5).Value = ActiveCell
ActiveCell.Offset(0, 1).Copy
Sheets("hoja2").Cells(fila, 6).PasteSpecial Paste:=xlValues
fila = fila + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub

recuerda finalizar

Muchas gracias me ayudó muchisimo la macro funciona bien, lo que me olvide poner en mi consulta es que las filas copiadas que se borren de la hoja1 como podría ser la macro???

Ok, quedaría así:

Ub proceso()
'por luismondelo
fila = 3
Sheets("hoja1").Select
Range("j3").Select
Do While ActiveCell.Value <> ""
If UCase(ActiveCell.Value) = "PEDRO CASTRO" Then
ActiveCell.Offset(0, -9).Copy
Sheets("hoja2").Cells(fila, 1).PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -6).Copy
Sheets("hoja2").Cells(fila, 2).PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -5).Copy
Sheets("hoja2").Cells(fila, 3).PasteSpecial Paste:=xlValues
ActiveCell.Offset(0, -1).Copy
Sheets("hoja2").Cells(fila, 4).PasteSpecial Paste:=xlValues
Sheets("hoja2").Cells(fila, 5).Value = ActiveCell
ActiveCell.Offset(0, 1).Copy
Sheets("hoja2").Cells(fila, 6).PasteSpecial Paste:=xlValues
fila = fila + 1
End If
ActiveCell.Offset(1, 0).Select
Loop
'+++++++++++++++++++++++++++++++++++++++++++++++++++++
Range("j3").Select
Do While ActiveCell.Value <> ""
If UCase(ActiveCell.Value) = "PEDRO CASTRO" Then
activecell.entirerow.delete
else
activecell.offset(1,0).select
end if
loop
End Sub

recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas