Cómo copiar y crear nuevas filas según criterio

En una columna tengo datos que son sólo letras (máximo 5), por ejemplo: "A", "C", "GD", "FTH" y lo que necesito es lo siguiente: Si el valor tiene más de una letra, separar las letras y colocarlas cada una en una fila nueva, además de copiar toda la información de las celdas de la fila que está arriba.

Ejemplo, en la columna 3 están estos valores:

Col_1 Col_2 Col_3

valor_a valor_b "A"

valor_c valor_d "FH"

valor_e valor_f "J"

valor_g valor_h "JUL"

Luego de aplicar la macro quedaría así:

valor_a valor_b "A"

valor_c valor_d "F"

valor_c valor_d "H"

valor_e valor_f "J"

valor_g valor_h "J"

valor_g valor_h "U"

valor_g valor_h "L"

1 respuesta

Respuesta
1

Te anexo la macro.

Antes de ejecutar la macro debes cambiar estos datos:

    Set h1 = Sheets("Hoja5")    'hoja origen
    Set h2 = Sheets("Hoja6")    'hoja destino
    col = "C"                   'columna de letras
    fila = 2                    'fila inicial donde empiezan las letras

Cambia "Hoja5 " por el nombre de tu hoja. Crea una nueva hoja y le pones "Hoja6", en la hoja6 quedará el resultado.

Cambia "C" por la columna de letras y el 2 por la fila inicial de tus datos.


La macro

Sub Crear_Filas()
'Por Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja5")    'hoja origen
    Set h2 = Sheets("Hoja6")    'hoja destino
    col = "C"                   'columna de letras
    fila = 2                    'fila inicial donde empiezan las letras
    h2.Cells.Clear
    '
    k = fila
    For i = fila To h1.Range(col & Rows.Count).End(xlUp).Row
        For j = 1 To Len(h1.Cells(i, col).Value)
            h1.Rows(i).Copy
            h2.Rows(k).PasteSpecial xlValues
            h2.Cells(k, col).Value = Mid(h1.Cells(i, col).Value, j, 1)
            k = k + 1
        Next
    Next
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

  • Sigue las Instrucciones para un botón y ejecutar la macro

    1. Abre tu libro 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. Ahora para crear un botón, puedes hacer lo siguiente:
    6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
    7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
    8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
    9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Crear_Filas
    10. Aceptar.
    11. Para ejecutarla dale click a la imagen.

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

[

'

.

Hola Dante, muchas gracias desde ya por la pronta respuesta. Sólo tengo una pequeña duda: resulta que el archivo que manejo es en exceso grande (casi 40MB) y al ejecutar la macro luego de cambiar los parámetros excel se me queda pegado y no sé si se está o no ejecutando (soy nuevo en lo que a macro se refiere). Hay alguna forma de saber, o confío ciegamente en que se está ejecutando y se demora por el peso del archivo? considerando que son más de 300.000 filas que tiene que analizar y dando el resultado más que éstas. Muchas gracias desde ya c:

Realiza una prueba con una muestra de 4 registros, tal y como lo pusiste en tu ejemplo. Después revisa el resultado.

Después de que la prueba sea exitosa, te sugiero que dividas tu archivo en 6 archivos de 50 mil registros, realiza una prueba para ver cuánto demora un archivo de 50,000.

'.[No olvides valorar la respuesta. 
'.[

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas