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

    • Buenos días compañeros, @JSDJSD Estoy utilizando la solución que me prestaste en la empresa y me solucionaste la vida a parte de estar super contento, y he añadido muchas cosas más. Ahora me encuentro con otro problemilla que me gustaría añadir y no sé como implementarlo en tu codigo. Necesito que en el textbox se obligue a añadir un mínimo de 8 caracteres y un maximo de 17 y si no es correcto que se termine la macro. No sé si me explico. He intentado añadir este código pero creo que no sé implementarlo correctamente ya que pongas lo que pongas me salta que tengo que poner 8 caracteres mínimo.   If Val(TextBox1) < 8 Or Val(TextBox1) > 17 Then MsgBox "Rango invalido. Mínimo 8 caracteres. Gracias." Exit Sub End If   No sé si me podrías ayudar de nuevo. Gracias
    • Te he reestructurado un poco él código. Ya comentarás si quieres los combos ordenados y que se añada de forma automática al elegir de la lista. LLAVES.xlsm
    • Hola @gacg1310! Adjunto 2 opciones, la primera usando la función BUSCARV y una columna auxiliar; y la segunda usando funciones matriciales (se ingresan presionando Ctrl + Shift + Enter). La búsqueda la hice en base al número de cédula, ya que los datos de los nombres no son adecuados; para que sirvan, el nombre de cada persona debe escribirse igual en ambas tablas ("ANSELMO SALAMANCA MARTINEZ" no es lo mismo que "ANSELMO MARTINEZSALAMANCA"). Saludos! datos a traer.xlsx
    • Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 3 Then ' Si la celda cambiada petenece a la coluna 3 = "C", entramos ... Application.EnableEvents = False 'Desactivo eventos porque voy hacer cambios en las celdas .Offset(, -1) = Format(Now, "hh:mm") 'Ponemos la hora en la celda, una celda a la Izq, de la celda modificada ' que si estamos en "C" ==> "B" If Len(.Text) = 0 Then .Offset(, -1) = "" ' Evaluo : Sí En la celda cambiada no hay nada, elimino ' lo que hay en la celda una a la Izq Application.EnableEvents = True 'Activamos eventos End If End With End Sub Te dejo el código comentado para que el próximo cambio te lo puedas apañar tú. Saludos
    • Hola a todos! Adjunto una opción usando forulación y una columna auxiliar. Los datos de la columna "Fecha recogida/entrega" no tenían el formato correcto, hay que convertirlos a formato fecha. Saludos! productividad por horas.xlsx
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy