Macro VBA recorre filas, busca y copia datos en base a criterios




Si bien este ejemplo es bastante específico por lo que se pretendía resolver además de ser un informe volcado a Excel desde un software de una empresa en particular, no obstante acá dejo otros links que permiten recorrer las filas como por ejemplo este recorre las filas busca el dato y lo resalta; también puedes consultar como eliminar una fila en recorre filas busca dato y elimina fila cuando encuentra el dato, tal vez te interese una macro que recorre las filas busca y dato y lo pega en otra hoja o recorrer la columna A y pegar los datos en la columna B, macro que recorre compara celdas y las colorea, también pueda que te interese recorrer filas buscar datos y pegarlo en otra hoja; si estás buscando ejemplos como recorrer filas los mencionados te pueden ayudar a realizar tu macro, si necesitas más ejemplos acá tienes cientos de ejemplos de macros con su archivo de ejemplo el cual puedes descargar, también encontrarás ejemplos con uso de formularios,combobox y textbox.

Con este procedimiento de VBA o macro de Excel, se muestra como recorrer una columna en particular, en este caso  la columna L del libro de Excel,   la macro; previamente determina cual es la última fila, en base a ello  utiliza el comando For... Next, buscando fila por fila si un dato cumple con el criterio dado, cuando haya ese dato, realiza otro bucle en busca de una cadena de texto, para ello se hecha mano a funciones como InStr y Left para extraer parte de una cadena, una vez hecho esto a través de Offset se traslada  a determinada posición donde se encuentra el dato a copiar que luego pega en la celda correspondiente, es un ejemplo más de como manipular datos, recorrer columnas, extraer cadenas, etc.

Si estás usando macros para automatizar tu libro de Excel seguramente te es necesario saber seleccionar o referenciar celdas, en FORMAS DE SELECCIONAR O REFERENCIAR CELDAS CON VBA (Spanish Edition) encontrarás una excelente ayuda; si trabajas con fechas en Excel, fíjate en el siguiente link que te puede ser de utilidad FORMATOS Y FUNCIONES DE FECHA Y HORA DE MICROSOFT EXCEL (Spanish Edition)

Esta macro me fue solicitada en un foro para la solución de un caso específico, lo interesante es analizar el procedimiento para observar su funcionamiento y poder utilizarlo como ejemplo para otros proyectos se necesite hacer algo parecido,  haz click para bajar el ejemplo.




  

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas 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.

El código que se encuentra a continuación se debe ingresar en un módulo, descargando el ejemplo lo podrás ver en funcionamiento, analizar, modificar y adaptar a lo que tú estés realizando el código está abierto sin ningún tipo de restricción.

Código a insertar en módulo

Sub CopiaDato()
Application.ScreenUpdating = False
On Error Resume Next
Dim uf, conta As Integer
Dim cadena, espacio, resultado As String
conta = 0
uf = Sheets("hoja1").Range("L" & Rows.Count).End(xlUp).Row
For x = 3 To uf
If Sheets("hoja1").Cells(x, 12).Value <> Empty And Sheets("hoja1").Cells(x, 12).Offset(0, -1).Value= "" Then
Application.StatusBar = "Realizando proceso aguarde ..."
  
   j = x
   For j = j To uf
      cadena = Sheets("hoja1").Cells(j, 9)
      If cadena <> Empty Then
      espacio = InStr(cadena, " ")
      resultado = Left(cadena, espacio - 1)
      End If
     
      If resultado = "Total" Then
       Application.StatusBar = "Realizando cambios ..."
         Sheets("hoja1").Cells(j, 9).Offset(0, 2).Select
         Selection.Copy
         Sheets("hoja1").Cells(x, 11).Select
         Selection.PasteSpecial Paste:=xlValues
         conta = conta + 1
         j = uf
         resultado = Empty
      End If
    Next j
End If
Next x

Application.StatusBar = "Terminando proceso ..."
MsgBox ("Se realizaron " & conta & " cambios"), vbInformation, "AVISO"
conta = 0
Application.StatusBar = Clear
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