Separar filas en excel

Trabajo con hojas de excel muy grandes alrededor de 120.000 filas cada hoja. Muchas filas están repetidas la columna A.
Lo que necesito es una macro para que cada vez que se repta la columna A se corten y se peguen los datos en una hoja nueva, quedando las filas de la hoja1 vacíos.

Ejemplo:

A1 B1 C1

xxx aaa ffff

xxx nnn sss

La fila 2 como tiene en la columna A el mismo registro que la fila 2, pues este se deberá cortar y pegar en la hoja2, y si hubieran 3 filas pues cada un registro en una hoja nueva

Y asi con todos los duplicados.

1 respuesta

Respuesta
1

Me puedes aclarar lo siguiente:

En tu ejemplo mencionas "la fila 2 como tiene en la columna A el mismo registro que la fila 2"

Quieres decir, ¿qué la fila 1 está repetida en la fila 2?

Si la fila2 está repetida en la fila 1, la fila 2 la paso a la hoja 2, pero que hago con los datos nnn y sss, ¿también los paso?

¿La fila 1 también se mueve a otra hoja o se queda en la hoja1?

¿En el siguiente ejemplo que hago?

A B C
1 xxx aaa ffff -> Este a dónde lo paso
2 xxx nnn sss -> Este se va a la hoja2

¿3 xxx bsd xya -> Este se va a la hoja2 o a la hoja3?

4 hhh aaa ffff -> Este a dónde lo paso
5 hhh nnn sss -> Este a dónde lo paso

Hola!!

Si la fila2 está repetida en la fila 1, la fila 2 la paso a la hoja 2, pero que hago con los datos nnn y sss, también los paso?

- SI

La fila 1 también se mueve a otra hoja o se queda en la hoja1?

- En la hoja1


En el siguiente ejemplo que hago?
A B C

1 xxx aaa ffff -> Este a dónde lo paso

si es la primera vez que sale ese registro en la columna A se queda en la hoja1

2 xxx nnn sss -> Este se va a la hoja2

-Si

3 xxx bsd xya -> Este se va a la hoja2 o a la hoja3?

- A la hoja3, puesto que es la · vez que sale el mismo registro en la columnaA

4 hhh aaa ffff -> Este a dónde lo paso 5

- No, ese se quedaría en la hoja1 puesto que es la 1ª vez que sale ese registro en la columnaA

hhh nnn sss -> Este a dónde lo paso

- A la hoja2

Te anexo una macro.

La hoja de datos se debe llamar "Hoja1"

Te va a crear una hoja con los datos únicos.

Otra hoja con los que están dos veces.

Otra hoja con los que están tres veces

Y así sucesivamente.

Instrucciones para ejecutar macro
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Para ejecutarla presiona F5

Sub contar()
'Separar filas en hojas
'Por.Dam
Set h1 = Sheets("Hoja1")
h1.Select
ufila = Range("B" & Rows.Count).End(xlUp).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
ucolx = ucol + 1
Range(Cells(1, 1), Cells(ufila, ucol)).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
una = 1
validar = Cells(2, 1)
validar_n = Cells(2, 1)
For i = 2 To ufila + 1
    Application.StatusBar = "Procesando " & i
    If una = 1 Then
        una = 2
        h1.Cells(i, ucolx) = "1"
        numhoja = 1
    Else
        validar_n = h1.Cells(i, 1)
        If validar = validar_n Then
            numhoja = numhoja + 1
            h1.Cells(i, ucolx) = numhoja
            'h1.Rows(i).Copy Destination:=h2.Range("a" & j)
        Else
            numhoja = 1
            h1.Cells(i, ucolx) = numhoja
        End If
    End If
    validar = validar_n
Next
nummax = Application.WorksheetFunction.Max(Columns(ucolx))
For i = 1 To nummax
    ActiveSheet.AutoFilterMode = False
    Rows(1).Select
    colletra = Mid(Cells(1, ucol).Address, 2, 1)
    Selection.AutoFilter
    Selection.AutoFilter Field:=ucolx, Criteria1:=i
    Columns("A:" & colletra).Select
    Selection.Copy
    Sheets.Add
    ActiveSheet.Paste
    h1.Select
Next
h1.Select
ActiveSheet.AutoFilterMode = False
Columns(ucolx).Clear
 Application.StatusBar = False
End Sub

Prueba y me comentas.
Saludos. Dam
Si es lo que necesitas, podrías de favor finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas