Jump to content

copiar y pegue en forma lineas mis datos


Recommended Posts

copiar y pegue en forma lineaL mis datos

Hola les explico un poco

miren tengo datos de una table dimanica que los puse

suc upc.modelo.color talla cantidad

ejemplo

300 1.45.bco.12.5

1.45.are.14.10

n.. filas

total300 115

301 5.46.verde.01.5

6.49.rojo.12.10

n.filas

total 301 215

lo que necesito hacer es copiar mis datos que stan vertical pasarlos en forma horizontal ej

300 1.45.bco.12.5 - 1.45.are.14.10 - n.. filas pero como excel 2000 tengo solo 256 columnas solo quiero poner 33 filas por renglon o fila y si pasan de las 33 que continue abajo si pasan de 66 continua abajo

o en cada 33 filas en forma lineal me ponga abajo las que continuen

ejemplo

33 filas 123

33 filas 456

33 filas 789

33 filas 10.11.12

he logrado pasarlas con una macro las 33 filas pero las restantes no se como hacerle

Sub 33()

Dim I As Integer

MI_NUMERO = 33

For I = 1 To MI_NUMERO

ActiveCell.Offset(0, -1).Select

Range(Selection, Selection.End(xlToLeft)).Select

Selection.Cut

ActiveSheet.Next.Select

ActiveCell.Activate

ActiveSheet.Paste

Application.CutCopyMode = False

Selection.End(xlToRight).Select

Selection.Copy

ActiveCell.Offset(0, 1).Select

ActiveSheet.Paste

Application.CutCopyMode = False

Selection.NumberFormat = "00000"

ActiveCell.Offset(0, 1).Select

ActiveSheet.Previous.Select

ActiveCell.Offset(1, 1).Select

Selection.End(xlToRight).Select

ActiveCell.Offset(0, 1).Select

Next I

End If

End Sub

lo que hace segun yo es de que tengo datos en forma vetical Libro1 de A1 a la G1 y en otra hoja hago que que se pongan en horizontal libro2 esas 7 celdas = de A1.G1 y de la libro 1 b2..g2 al libro 2 de h1..n1 y asi sucesivamente pero quiero que cuando el libro dos llegue a 15 lineas puestan en horizontal continuen en las demas lineas continuen en libro 2 comenzando en a2..g2 y asi sucesivamente

de antemano les agradesco su ayuda

les adjunto mi archivo la primera hoja es tabla dinamica la segunda es donde deben de quedar y la tercera es como debe quedar lo que necesito es pasarlo de vertical a horizantal es como si fuera la opcion de trasnponer pero con mas de una fila la quiero con 06 columnas una fila seguida de la otra hasta cumplir 33 filas la 34 que inicie desde el principio de nuevo

pero son muchas sucursales con diferentes lineas

de antemno muchas gracias les dejo lo mi macro que trataba de hacer a ver si me pueden ayudar gracias

liga del archivo gracias [ATTACH]18020.vB[/ATTACH]

ordenar de vetical a horizontal.rar

Link to post
Share on other sites

Saludos nachor10.

Para que los compañeros del foro puedan ayudarte lo mejor que se pueda, visita y lee detenidamente lo que se te indica en el siguiente enlace. https://www.ayudaexcel.com/foro/f10/reglas-del-foro-11577/, esto te ayudara mucho para tener una pronta y asertada respuesta de los compañeros.

Atte.

joshua

9.- Un 99% de los post que tienen archivos adjuntos han sido resueltos satisfactoriamente, y en algunos casos hasta varias versiones del archivo por diferentes usuarios. Por lo tanto es indispensable que adjuntes una porción del archivo, para mejor comprensión. Anexar archivo con sus datos pero sólo con los suficientes para aclarar la duda. EXCEL 2003 y .ZIP, no todos tienen 2007. Ser muy claros y sencillos al explicar lo que buscamos!

Link to post
Share on other sites

de antemano muchas gracias amigo

deseo pasar los datos de una tabla dinamica que se encuentra en forma vertical a horizontal

ejemplo

supongamos que tenemos estos datos cada numero es un campo que se encuentra en vertical pasarlo a horizontal

ABCDFG

1 111111

2 222222

3 333333

4 444444

5 555555

6 666666

7 777777

8 888888

9 999999

estos datos son verticales pasarlos o que queden asi

columna

ABCDFGHIJKLMNÑOPQRSTUVWXYZ

FILA1 1111111222222333333444444555555666666777777888888999999

Link to post
Share on other sites

muchas gracias de antemano

Ean/Upc Talla Color Modelo Cantidad total En la Hoja2

Tienda Ean/Upc Talla Color Modelo Total Tabla dinámica

La Cantidad es = que el total

el unico detalle que el total trae una proiedad de texto con 00000 pero es lo mismo es una que la Total = Cantidad

La Tienda es el primer campo que sale como resultado de la Tabla dinamica como vez solo es una vez

Pero te comento solo necesito que se repita 39 veces ya que trabajo con office 2000 2003 que se limitan a 256 columnas

Pero en ocaciones las filas verticales sobrepasan 108 lineas entonces si tengo 39 las subsecuentes se incorporen abajo

lo que trato de hacer es convetir la tabla dinamica de vertical a horizontal en la hoja2 para convetirla en codigos de barra con un programa que se llama LABEL MATRIZ pero ste maneja datos lineales, ya que excel por lo que se no maneja codigos de barra logre ponerlo con un programa que se llama o que trabaja con excel 2000 2003 pero con office 2007 no el programa se llama BarCodeWiz ActiveX 2.2

de antemano agradesco tu ayuda neverdelimon1 ya que si de vdd en algo yo pueda ayudarte con mucho gusto lo hago yo soy del d.f. me gustaria saber de donde eres te envio mi correo electronico es ramirez_narciso@hotmail.com para que si puedes agreegarme al messenger lo reitero agradesco mucho tu ayuda

Link to post
Share on other sites

Hola nachor10

Aqui te dejo la macro que transpone de 39 en 39 filas

Como al parecer tienes una base de datos bastante grande, y como desconozco lo pesado del archivo y las formulas que uses, opte por enviar todos los datos a una matriz en VBA, procesarlos y devolver el resultado a la hoja2, con ello ganamos bastante velocidad.

Prueba y nos comentas como te fue

Option Explicit
Sub Transponer39()
'Como al parecer tienes bastantes datos y como desconozco las fórmulas que estes usando y lo pesado del libro, vamos a usar una matriz para procesar _
todos los datos desde VBA y una vez procesados los devolvemos a MS Excel, con ello considero ganaremos velocidad, nvr ;-)
Dim RngBase As Range '
Dim HojaTabla As Worksheet
Dim HojaDestino As Worksheet
Dim Valida As Boolean
Dim MtzDat() As Variant
Dim MtzProc() As Variant
Dim i As Long
Dim Avan As Long, ContFil As Long
Dim Tienda
Const NumFil = 39
'Asigamos la hoja que tiene la tabla
Set HojaTabla = Sheets("Tabla")
'Asigna la hoja destino
Set HojaDestino = Sheets("Hoja2")

With HojaTabla
'verificamos que tenga los datos deseados

On Error Resume Next
'Busca la palabra "Tienda" y a partir de ahi mediante offset vamos buscando los demas datos _
para poder determinar asi, si es el formato esperado, en caso de que no esten todos los datos _
significara que se esta usando otra hoja o que no estan los datos como los espera la macro _
por lo que sale del proceso para evitar errorres
Set RngBase = .Range("A:A").Find("Tienda")
On Error GoTo 0
If Not RngBase Is Nothing Then
Valida = True
'Validamos que esten las columnas deseadas
If RngBase.Offset(, 1) <> "Ean/Upc" Then Valida = False
If RngBase.Offset(, 2) <> "Talla" Then Valida = False
If RngBase.Offset(, 3) <> "Color" Then Valida = False
If RngBase.Offset(, 4) <> "Modelo" Then Valida = False
If RngBase.Offset(, 5) <> "Total" Then Valida = False
End If
If Valida Then
'Enviamos los datos a procesar a una matriz (los datos se envian a la matriz MtzDat)
If .Range("B:B").Find("*", , , , xlRows, xlPrevious).Row > RngBase.Row Then
MtzDat = Range(RngBase.Offset(1), .Range("B:B").Find("*", , , , xlRows, xlPrevious).Offset(, 4)).Value
'Creamos nuestra matriz donde procesaremos los datos (los datos serán procesados en la matriz MtzPrc) _
en este caso se va ir redimensionado (cambiando el tamaño) de la matriz conforme se vaya agregando datos, _
es decir cada que haya una nueva fila se aumentara el tamaño, y se presevaran los datos contenidos, solo que vba _
permite lo anterior (redimensionar y conservar datos al mismo tiempo) siempre que solo se redimensione la ultime dimesion de la matriz _
entonces lo hacemos es ver las filas como columnas y las columans como fila, por ejemplo en tu tabla esta asi _
Tienda Ean/Upc Talla Color... _
Dato1 Dato2 Dato3 Dato4... _
entonces lo que hicimos fue verlos desde esta perspectiva _
Tienda Dato1 _
Eacn/Upc Dato2 _
Talla Dato3 _
Color Dato4 _
es decir los titulos los ponemos en las filas y los datos en las columnas _
y asi ir agregando los datos, comenzamos con los títulos
ReDim MtzProc(1 To (NumFil * 6) + 1, 1 To 1)
MtzProc(1, 1) = "Tienda"
For i = 2 To 234 Step 6
MtzProc(i, 1) = "Ean/Upc"
MtzProc(i + 1, 1) = "Talla"
MtzProc(i + 2, 1) = "Color"
MtzProc(i + 3, 1) = "Modelo"
MtzProc(i + 4, 1) = "Cantidad"
MtzProc(i + 5, 1) = "Total"
Next
ContFil = 1
Avan = 1
'a partir de aqui vamos agregando los datos de la tabla dinamica bajo la optica comentada arriba de filas en columnas y columnas en filas
For i = LBound(MtzDat, 1) To UBound(MtzDat, 1)
If MtzDat(i, 2) <> "" Then
ContFil = ContFil + 1
'si cambia de codigo de tienda o se revasan las 39 filas redimensiona la matriz para agregar los datos en la siguiente columna
If ContFil > UBound(MtzProc, 1) Or MtzDat(i, 1) <> "" Then
If MtzDat(i, 1) <> "" Then Tienda = MtzDat(i, 1)
ContFil = 2
Avan = Avan + 1
ReDim Preserve MtzProc(1 To UBound(MtzProc, 1), 1 To Avan)
MtzProc(ContFil - 1, Avan) = Tienda
End If
'agrega los datos de la tabla dinamica a la matriz
MtzProc(ContFil, Avan) = MtzDat(i, 2)
MtzProc(ContFil + 1, Avan) = MtzDat(i, 3)
MtzProc(ContFil + 2, Avan) = MtzDat(i, 4)
MtzProc(ContFil + 3, Avan) = MtzDat(i, 5)
MtzProc(ContFil + 4, Avan) = MtzDat(i, 6)
MtzProc(ContFil + 5, Avan) = MtzDat(i, 6)
ContFil = ContFil + 5
End If
Next
'transpone matriz (recueda como los estavamos viendo, ahora solo los volvemos a cambiar para que queden como en tu tabla)
MtzProc = TransponerMatriz(MtzProc)
'borra las celdas donde escribirá los resultados
HojaDestino.Range("A1").Resize(Rows.Count, UBound(MtzProc, 2)).ClearContents
'escribe la matriz en excel
HojaDestino.Range("A1").Resize(UBound(MtzProc, 1), UBound(MtzProc, 2)).Value = MtzProc
'formato de 13 digitos para el Ean/Upc
For i = 2 To NumFil * 6 + 1 Step 6
HojaDestino.Cells(1, i).EntireColumn.NumberFormat = "0000000000000"
Next
'Mensaje de datos procesados
MsgBox "Listo", vbInformation
Else
'Mensaje de no hay datos a procesar
MsgBox "No hay datos a procesar", vbCritical
End If
Else
'Mensaje de no encontrarse el formato esperado
MsgBox "No se econtro el formato esperado", vbCritical
End If
End With

'libera objetos
Erase MtzDat
Erase MtzProc
Set HojaTabla = Nothing
Set HojaDestino = Nothing
Set RngBase = Nothing


End Sub

Function TransponerMatriz(Matriz As Variant)
'Funcion para transponer matriz, base 1, hace lo mismo que la funcion transpose de MS Excel, solo que como aquella esta limitada a maximo 255 caracteres _
por eso usamos la funcion personalizada, lo que hace es cambiar filas a columnas y columnas a filas, solo trabaja con una matriz de dos dimensiones

Dim x As Long, y As Long, XSuperior As Long, YSuperior As Long
Dim MtzTemp As Variant
'Inidce superior de la segunda dimension
XSuperior = UBound(Matriz, 2)
'indice superior de la primera dimension
YSuperior = UBound(Matriz, 1)
'Redimension de la matriz
ReDim MtzTemp(1 To XSuperior, 1 To YSuperior)
'Bucle para cambiar datos de filas a columnas y viceversa
For x = 1 To XSuperior
For y = 1 To YSuperior
MtzTemp(x, y) = Matriz(y, x)
Next
Next
'asigan el resultado a la función
TransponerMatriz = MtzTemp
'libera memoria
Erase MtzTemp
End Function[/PHP]

Por aca encuentras el archivo no lo puede subir al foro porque sobrepasa el tamaño

ordenar de vetical a horizontal-nvr.zip - 4shared.com - online file sharing and storage - download

Saludos cordiales

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


  • Posts

    • Hola @Dani2020  Lo que pasa que estas confundiendo las variables, y eso hace que falle Prueba esto, a ver como te va Sub Modificar() Set H1 = Sheets("CERTIFICACION") Set H2 = Sheets("BD") Set BD = H2.Columns("A").Find(H1.[C4], lookat:=xlWhole) If H1.[C4] <> "" Then If Not BD Is Nothing Then Application.ScreenUpdating = False fi = BD.Row H2.Cells(fi, "B") = H1.[C6] H2.Cells(fi, "C") = H1.[C8] H2.Cells(fi, "D") = H1.[C10] H2.Cells(fi, "E") = H1.[C12] H1.Range("C4,C8,C10,C12").ClearContents Application.ScreenUpdating = True Else VBA.MsgBox "Nombre no encontrado", vbCritical, "AyudaExcel" End If End If Set H1 = Nothing Set H2 = Nothing Set BD = Nothing End Sub Supongo que mi código es similar al @tierra_pampa   Saludos a ambos!
    • si solo habrá 50 nombres, no tiene sentido poner reglas de validación por lista a TODA una columna, si al final de cuentas SOLO podrás seleccionar un nombre (de 50) -?- en vía de mientras, analiza este artículo: - Hide Used Items in Drop Down List al final de la página puedes descargar un libro con los ejemplos (el #1)
    • Hola @Dani2020 Por favor, prueba si lo que entendí es lo que necesitas. Suerte!     ae20200929_post44048_Modificar 2020.xlsm
    • Perdón, elegí un post equivocado al responder!  
    • Hola Buenas tardes @Antoni   Agradezco su ayuda. He subido el ejemplo de los formularios que estoy utilizando. Los he reducido solo para mostrar lo que necesito. Adicional a esto, me esta pasando que se me esta cerrando excel cuando trato de actualizar el combobox desde el otro formulario, no se si esto ya sea un problema de memoria del ordenador.   Mil gracias. Ejemplo.xlsb
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy