Jump to content

Archived

This topic is now archived and is closed to further replies.

rodrigol

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy