¿Cómo puedo mover una celda a la siguiente fila según su contenido en un rango determindo con vba?

Para todos los expertos en este foro. Mi problema es el siguiente. Tengo datos en la columna "A", y lo que deseo es que mediante un código se recorra todo el rango de datos de la columna "A" empezando desde la fila 2 y detecte las celdas que contengan texto y las mueva a la siguiente fila en la columna (solo la celda, no toda la fila) sin importar lo que halla en la siguiente celda. También si se pudiera que copie el contenido de la celda que fue movida hacia bajo por cada celda con texto que se encuentre. Aclaro que en las celdas de la columna "A" tengo celdas con nombres de productos (las cuales quiero que se muevan a la siguiente celda y se copien en el rango hacia abajo hasta la siguiente celda con texto que fue movida y luego eta se copie de la misma forma y así sucesivamente), celdas en blanco y celdas con el valor "0". Espero me puedan ayudar. Este es el código que he trabajado para mover las celdas pero no me funciona. Todavía soy novato en el manejo de código vba. Les agradezco de ante mano.

Sub cortarpega()

Dim i As Integer

For i = 2 To 100

If Cells(i, 1).Value <> 0 Then

Cells(1).Select

Selection.Cut

ActiveCell.Offset(1, 0).Select

ActiveSheet.Paste

End If

Next i

End Sub

1 Respuesta

Respuesta
1

Pensé que alguien me podía ayudar, no estaba tan difícil. No encontré un código que me diera la solución pero investigando pude decifrarlo. Les dejo el código por si a alguien le interesa.

Sub cortarpega()
Dim i As Integer
j = 2
For i = 2 To 100
If Cells(i, 1).Value <> 0 Then
Cells(i, 1).Select
Selection.Cut Destination:=ActiveCell.Offset(1, 0)
i = i + 1
End If
Next
End Sub

Aquí esta la otra parte del código donde recorre la columna A empezando en la segunda fila y cuando encuentra un texto lo copia hacia abajo en las celdas en blanco hasta antes de la siguiente celda con texto y hace los mismo con la siguiente y siguiente.

Sub filldownrange()

Dim lastrow2 As Long
lastrow2 = Cells(Rows.Count, "B").End(xlUp).Row '"B" is the column in which stop the counting from the bottom

Range("A2").Select

Do Until Selection.End(xlDown).Value = ""
Selection.End(xlDown).Offset(-1, 0).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.filldown
Selection.End(xlDown).Select
Loop
Range(Selection, Cells(lastrow2, "A")).FormulaR1C1 = ActiveCell.FormulaR1C1

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas