none
Transformar filas en columnas RRS feed

  • Pregunta

  • Hola, tengo un problema al juntar una serie de columnas en un única columna. Los datos que tengo son estos por ejemplo:
    1 2 3
    4 5 6
    7 8 9
    y quiero que me queden en una única columna tal que así,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Si me podéis echar un cable se agradece ;)
    Un saludo
    miércoles, 15 de junio de 2011 16:16

Respuestas

  • Hola de nuevo

    ¿Se supone que tienes tres datos por cada fila? en el caso de excel, tres celdas por fila, en el caso de Access, tres campos por registro. ¿Correcto?

    ¿Y donde quieres generar la salida? puedes crearte una tabla de destino con un único campo, y abrir un recordset con los datos de origen

    Public Sub Fila()
      Dim db As DAO.Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset
      
      Set db = CurrentDb
      Set rs1 = db.OpenRecordset("tblOrigen", dbOpenForwardOnly)
      Set rs2 = db.OpenRecordset("tblDestino", dbOpenDynaset)
      
      Do Until rs1.EOF
        rs2.AddNew
        rs2.Fields("D") = rs1.Fields("A")
        rs2.Update
        rs2.AddNew
        rs2.Fields("D") = rs1.Fields("B")
        rs2.Update
        rs2.AddNew
        rs2.Fields("D") = rs1.Fields("C")
        rs2.Update
        'Paso al siguiente registro
        rs1.MoveNext
      Loop
      
      rs1.Close
      Set rs1 = Nothing
      
      rs2.Close
      Set rs2 = Nothing
      
      db.Close
      Set db = Nothing
    End Sub
    
    

    Espero te sirva

    Salu2,


    José Mª Fueyo [MS MVP Access]
    jueves, 16 de junio de 2011 16:49

Todas las respuestas

  • Hola

    ¿De que se trata, de Access o de Excel? ¿versión...?

    Salu2,


    José Mª Fueyo [MS MVP Access]
    jueves, 16 de junio de 2011 8:07
  • Disculpa, se me olvidó.

    Pues me da igual donde sea más fácil. El archivo lo puedo cargar tanto en Excel como en Access (2007). Si es en access casi mejor, pero vamos, donde sea más fácil ;)

    Gracias por responder. Un saludo

    jueves, 16 de junio de 2011 14:30
  • Hola de nuevo

    ¿Se supone que tienes tres datos por cada fila? en el caso de excel, tres celdas por fila, en el caso de Access, tres campos por registro. ¿Correcto?

    ¿Y donde quieres generar la salida? puedes crearte una tabla de destino con un único campo, y abrir un recordset con los datos de origen

    Public Sub Fila()
      Dim db As DAO.Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset
      
      Set db = CurrentDb
      Set rs1 = db.OpenRecordset("tblOrigen", dbOpenForwardOnly)
      Set rs2 = db.OpenRecordset("tblDestino", dbOpenDynaset)
      
      Do Until rs1.EOF
        rs2.AddNew
        rs2.Fields("D") = rs1.Fields("A")
        rs2.Update
        rs2.AddNew
        rs2.Fields("D") = rs1.Fields("B")
        rs2.Update
        rs2.AddNew
        rs2.Fields("D") = rs1.Fields("C")
        rs2.Update
        'Paso al siguiente registro
        rs1.MoveNext
      Loop
      
      rs1.Close
      Set rs1 = Nothing
      
      rs2.Close
      Set rs2 = Nothing
      
      db.Close
      Set db = Nothing
    End Sub
    
    

    Espero te sirva

    Salu2,


    José Mª Fueyo [MS MVP Access]
    jueves, 16 de junio de 2011 16:49
  • Muchas gracias por responder, al final lo he decidido hacer con Visual Basic.

    Les agradezco nuevamente la ayuda.

    Un saludo

    jueves, 16 de junio de 2011 18:43
  • Hace bastante tiempo de esto, pero igual quiero agradecer a José Mª Fueyo su disposición y esfuerzo por ayudar. Creía que no podría resolver mi problema de convertir 227 filas-registros de 6 campos en una sola columna; pues con esta línea (dentro del evento click de un botón en un formulario, y sustituyendo "Public Sub Fila()" por "Private Sub Comando2_Click()") pude hacerlo de un sólo golpe (o debo decir, un sólo click).

    Muchísimas gracias, amigo!

    sábado, 15 de abril de 2017 16:36
  • A ti.

    Es un placer leer cosas como estas tras casi seis años haberlas escrito. :-)

    Salu2,


    José Mª Fueyo

    lunes, 17 de abril de 2017 10:03