Recorre filas busca en base un criterio copia datos





En este post se expone un ejemplo más sobre como realizar un bucle recorriendo celdas buscar datos en base a criterios, copiarlo en otra hoja, otros ejemplos que presentan variantes puedes encontrar en recorrer y buscar datos en dos columnas, recorre filas encuentra datos y los suma, recorre filas busca datos y los pega en otra hoja.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Desde el link del final se puede descargar el ejemplo denominado Recorre filas busca datos en base a criterio y los copia en otra hoja, el código no tiene restricción, es de libro acceso y su uso gratuito.

Básicamente el ejemplo realiza un bucle recorriendo todas las filas hasta la última fila con datos en este caso el bucle se realiza con While ... Wend; se determina si la Columna "E" de la fila recorrida por el bucle es mayor a 60, que es la edad de la persona del listado en el cual se está trabajando.

En caso verdadero la macro copia todos los datos de la fila y los copia en la hoja2, previamente identifica en la hoja2 cual es la última fila con datos y selecciona la primer fila vacía para pegar los datos de la fila copiada.

En este ejemplo se aprende como recorrer filas hasta la última fila con datos, lo cual se hace con el siguiente código:

While Sheets("Hoja1").Cells(fila, 2) <> Empty
....
fila = fila + 1
Wend

Otra forma de encontrar la última fila con datos es:

Range("A1").Select
  While ActiveCell <> Empty
  ActiveCell.Offset(1, 0).Select
 Wend

La diferencia con la anterior es que se posiciona en la fila donde va a empezar a buscar y luego va seleccionando la fila siguiente, cada vez que pasa a la fila siguiente se evalúa si está vacía o no en caso de estar vacía sería la anterior sería la última fila con datos.

También se puede observar como copiar una fila de una hoja a la otra hoja con el siguiente código:

ActiveCell.EntireRow.Copy Destination:=Sheets("Hoja2").Cells(uf, 1)

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Sub busca()
Application.ScreenUpdating = False
Dim fila, fila1 As Integer
Dim a As Date
fila = 10

While Sheets("Hoja1").Cells(fila, 2) <> Empty
a = Sheets("Hoja1").Cells(fila, 5).Value
 yold = (Date - a) / 365
If yold > 60 Then
  Sheets("Hoja2").Select
  Range("A1").Select
  While ActiveCell <> Empty
  ActiveCell.Offset(1, 0).Select
  Wend
  uf = ActiveCell.Row
  Sheets("Hoja1").Select
  Cells(fila, 5).Activate
  ActiveCell.EntireRow.Copy Destination:=Sheets("Hoja2").Cells(uf, 1)
  'Rows(fila).Delete
End If
fila = fila + 1
Wend
MsgBox ("Los datos se copiaron con éxito"), vbInformation, "AVISO"
Application.ScreenUpdating = True
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends