Saltar al contenido

Macro en Excel - Columnas a Filas Continuas


Recommended Posts

Buenas tardes,

Me parece genial este foro, pues se ve que hay bastante ayuda en cuanto a este tema de excel.

Soy nuevo y me agradaria que alguno me ayude con lo sig.

He encontrado este macro, en algún lugar jeje la verdad no recuerdo; y sirve casi perfectamente para lo que necesito. Lo que hace es pasar varios datos de columnas, uno debajo del otro, Obteniendo los datos en las filas, iniciando en 1 celda y terminando en la número 13 y los datos de la fila 2 acomodarlos de la celda 14 a la 27 y así sucesivamente hasta terminar con los datos iniciales.

Aqui lo comparto, 

-------------------------------------

Sub Columna()

    Const NUMERO_COLUMNAS = 8
    Const NUMERO_FILAS = 5000
    Const COLUMNA_DESTINO = 13 'La columna número 5 es la L
    
    Dim m As Long
    Dim n As Long
    Dim nFilaDestino As Long
    
    Columns(COLUMNA_DESTINO).Clear
    
    nFilaDestino = 1
    For m = 1 To NUMERO_FILAS
        For n = 1 To NUMERO_COLUMNAS
            Cells(nFilaDestino, COLUMNA_DESTINO) = Cells(m, n)
            nFilaDestino = nFilaDestino + 1
        Next
    Next
    
    Cells(1, COLUMNA_DESTINO).Select
    
End Sub

-------------------------------------

El problema radica en que sirve muy bien cuando hay 13 columnas, pero lo necesito aumentar a 30, y me sale error, he intentado cambiar las variables pero nada funciona. No soy conocedor de mucho en macros jeje pero he probado con lo que se y no encuentro la solucion.

Adjunto el archivo para que me entiendan mejor.

Alguien podria ayudarme?

Muchas gracias,

 

Rodrigo

macro-13.xls

Enlace a comentario
Compartir con otras webs

Posible Solución

Sub Columna()

    Const NUMERO_COLUMNAS = 30
    Const NUMERO_FILAS = 5000
    Const COLUMNA_DESTINO = 31 'La columna número 5 es la L
    
    Dim m As Long
    Dim n As Long
    Dim nFilaDestino As Long
    Dim nColumnaDestino As Long
    
    'Columns(COLUMNA_DESTINO).Clear
    
    nFilaDestino = 1
    For m = 1 To NUMERO_FILAS
        For n = 1 To NUMERO_COLUMNAS
        On Error Resume Next
            Cells(nFilaDestino, COLUMNA_DESTINO) = Cells(m, n)
            nFilaDestino = nFilaDestino + 1
        Next
    Next
    
    Cells(1, COLUMNA_DESTINO).Select
    
End Sub
 

Saludos

Enlace a comentario
Compartir con otras webs

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.