.
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.
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
UN CAFÉ y de esta manera ayudar a seguir
manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.
.
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