Copiar celdas de una columna a otra con condición

Hola qué tal:
Yo sé que ya te he dado mucha lata y me vas a odiar por estarte pregunta y pregunta, pero es que en verdad tu siempre me entiendes al resultado que quiero llegar además que aprendo mucho de ti, es por eso, que abusando de tu gentileza me atrevo a a pedir tu ayuda nuevamente para lo siguiente:
Yo tengo una hoja con dos columnas A Y B y filas variables las cuales tienen cantidades, pero resulta que yo necesito que todas las cantidades solo queden en A, así que hice un código que revise linea por linea de la columna A, si existe cantidad no haga nada y pase a la siguiente línea, pero si está en blanco pase la cantidad de la columna B a la columna A y borre la de la B así hasta terminar todas las líneas. Te explico con un ejemplo
A B
500
300
                 200
100
En este caso empezaría a revisar y en A2 no haría nada puesto que hay cantidad así que solo saltaría a la celda A3 como es el mismo caso de arriba hace lo mismo, pero al llegar a A4 la celda está en blanco así que pasaría la cantidad de B hacia A y la borra de B después de esto pasa a la celda A5 y ahí termina, o sea, las cantidades de B necesito pasarlas a A para eliminar la columna B y conjuntar las cantidades en A. Este es el código que hice, pero me da error.
Sub Botón1_AlHacerClic()
    Range("B2").Select
    Do
    While ActiveCell = ""
            ActiveCell.Offset(0, 1).Select
                    If ActiveCell.Value <> "" Then
                        Abono = ActiveCell.Value
                        ActiveCell.Offset(0, -1).Select
                        ActiveCell.Value = Abono
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Delete
                        ActiveCell.Offset(0, -1).Select
                        ActiveCell.Offset(1, 0).Select
                    End If
    Wend
    ActiveCell.Offset(1, 0).Select
    Loop
End Sub
Respuesta
1
Range("A2").Select
    Do
    While ActiveCell = ""
            ActiveCell.Offset(0, 1).Select
                    If ActiveCell.Value <> "" Then
                        Abono = ActiveCell.Value
                        ActiveCell.Offset(0, -1).Select
                        ActiveCell.Value = Abono
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = ""
                        ActiveCell.Offset(0, -1).Select
                    End If
    Wend
    ActiveCell.Offset(1, 0).Select
    Loop
Recuerda Valorar y cerra, si es que te sirvió, si no es así, estaré atento a tus comentarios
Antes que nada agradezco infinitamente tu ayuda en verdad muchas gracias. Y bueno la macro ya hace lo que quiero, pero el código tiene un error ya que al llegar al final del rango sigue buscando hasta la última columna de la hoja y como ya no encuentra más columnas saca un error, creo que falta fijar un Tope en el cual si las columnas tanto A como B están en blanco ya deje de hacer el proceso porque ahorita aunque llegue al final del rango sigue buscando y por eso saca un error.
Quedo en espera de tus comentarios. Gracias
paso = 0
salir = 0
Range("A2").Select
    While ActiveCell <> "" And salir = 0
            ActiveCell.Offset(1, 0).Select
            ActiveCell.Offset(0, 1).Select
                    If ActiveCell.Value <> "" Then
                        Abono = ActiveCell.Value
                        ActiveCell.Offset(0, -1).Select
                        ActiveCell.Value = Abono
                        ActiveCell.Offset(0, 1).Select
                        ActiveCell.Value = ""
                        paso = 0
                         If paso > 2 Then
                           paso = paso + 1
                           MsgBox (paso)
                          End If
                        End If
                    ActiveCell.Offset(0, -1).Select
    Wend
    ActiveCell.Offset(1, 0).Select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas