Macro para insertar una linea en blanco y un asterisco cuando cambie el contenido de las celdas de una columna en un excel.

Necesito importar a mi programa de contabilidad todos los asientos contables de una empresa y tengo que hacerlo a través de una plantilla de excel que tiene mi programa contable. El cliente me ha mandado todos los asientos contables en un excel, pero están todos juntos, es decir, sin separación entre un asiento y otro y yo necesito insertar una línea en blanco entre cada asiento distinto, junto a un asterisco. De esta forma, mi programa al importar el excel va a poder separar cada asiento contable. Os pongo una imagen del excel. Los asientos no tienen todos el mismo número de líneas, por lo que la idea sería crear una macro que vaya comparando la columna B, que es donde viene el número de asiento y que en cuanto detecte que el número de la celda de abajo es diferente al de arriba, inserte una línea en blanco y en la columna A de esa fila en blanco inserte un asterisco (como aparece al principio de la imagen). He estado mirando por internet y no he encontrado nada y mis conocimientos de macros son nulos. Un saludo y muchas gracias a todos.

1 respuesta

Respuesta
1

Si entendí bien lo que quieres es esto, entonces debajo de esta imagen esta la macro que ocupas

esta es la macro

Sub separar_filas()
Dim unicos As New Collection
Set datos = Range("a1").CurrentRegion
With datos
    filas = .Rows.Count
    For i = 1 To filas
        asiento = .Cells(i, 2)
        On Error Resume Next
            unicos.Add asiento, CStr(asiento)
        On Error GoTo 0
    Next i
    For j = 1 To unicos.Count
        asiento = unicos.Item(j)
        cuenta = WorksheetFunction.CountIf(.Columns(2), asiento)
        fila = WorksheetFunction.Match(asiento, .Columns(2), 0)
        Set asientos = .Rows(fila).Resize(cuenta)
        With asientos.Rows(asientos.Rows.Count + 1)
            .EntireRow.Insert
            .Cells(0, 1) = "*"
        End With
    Next j
End With
End Sub

en el menu selecciona programador, luego Visual Basic, en el menu escoges insertar y luego modulo en el copias el codigo y con f5 correr a macro otra es insertar un boton en la hoja y correrlo desde ese boton

¡Gracias! Muchísimas gracias, James. He ejecutado la macro y funciona a la perfección. Era exactamente lo que quería. ¡Qué envidia me dais los que controláis esto de las macros!. Mil gracias por la rapidez.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas