Ayuda Transponer datos |
Responder |
Autor | |
Prizionero
Nuevo Unido: 01/Diciembre/2011 Localización: Chile Estado: Sin conexión Puntos: 19 |
Tema: Ayuda Transponer datos Enviado: 27/Enero/2021 a las 17:38 |
Buenas tardes,
favor necesito de vuestra ayuda. necesito transponer datos horizontal a vertical en exel pero con codigo vb ya que tabla es grande. me explico: tengo un plan de trabajo mensual en exel algo asi, (estos datos son fijos) / (dias del mes hasta el 31) Encabezado -----> -sector-ubicacion-tipo-empresa - 1-2-3-4-5-6..... datos----------> - a - zona 1 - limpiar - particular - 0-0-1-0-0,5-1... - b - zona 2 - limpiar - particular- 1-0-0-0-1-0... - c - zona 5 - cortar - particular - 0-0-0-0-0-1... Asi esta conformada la tabla en exel, lo que necesito es copiar de forma vertical los dias que contengan valor. (en vez de cero esa celda esta vacia) ejemplo como deberia quedar: sector-ubicacion -tipo - empresa - Dia - cantidad a - zona 1 - limpiar - particular - 3 - 1 a - zona 1 - limpiar - particular - 5 - 0,5 a - zona 1 - limpiar - particular - 6 - 1 b - zona 2 - limpiar - particular- 1 - 1 b - zona 2 - limpiar - particular- 5 - 1 c - zona 5 - cortar - particular - 6- 1 ....y asi sucesivamente, entonces como se ve en el ejemplo se repiten los datos fijos hacia abajo con su respectivo dia siempre y cuando tenga algun valor de lo contrario pasa al siguiente... Espero haberme explicado bien y estoy atento a su ayuda.. Gracias
|
|
MSN
|
|
Prizionero
Nuevo Unido: 01/Diciembre/2011 Localización: Chile Estado: Sin conexión Puntos: 19 |
Enviado: 27/Enero/2021 a las 20:25 |
parece esta complicado,
bueno, buscando buscando di con un codigo el cual modifique y quedo algo asi: Sub TransposeInsertRows() 'transponerdatos Dim xRg As Range Dim i As Long, j As Long, k As Long Dim x As Long, y As Long Set xRg = Application.InputBox _ (Prompt:="Range Selection...", _ Title:="traspaso", Type:=8) Application.ScreenUpdating = False x = xRg(1, 1).Column + 8 y = xRg(1, xRg.Columns.Count).Column For i = xRg(xRg.Rows.Count, 1).Row To xRg(1, 1).Row Step -1 If Cells(i, x) <> "" And Cells(i, x + 1) <> "" Then k = Cells(i, x - 2).End(xlToRight).Column If k > y Then k = y For j = k To x + 1 Step -1 Cells(i + 1, 1).EntireRow.Insert With Cells(i + 1, x - 2) .Value = .Offset(-1, 0) .Offset(0, 1) = .Offset(-1, 1) .Offset(0, 2) = Cells(i, j) End With Cells(i, j).ClearContents Next j End If Next i Application.ScreenUpdating = True End Sub queda asi: sector-ubicacion -tipo - empresa - cantidad -Dia a - zona 1 - limpiar - particular - 0 a - zona 1 - limpiar - particular - 0 a - zona 1 - limpiar - particular - 0 a - zona 1 - limpiar - particular- 0,5 a - zona 1 - limpiar - particular- 1 b - zona 2 - limpiar - particular - 1 b - zona 2 - limpiar - particular - 0 b - zona 2 - limpiar - particular - 0 b - zona 2 - limpiar - particular - 0 b - zona 2 - limpiar - particular - 1 b - zona 2 - limpiar - particular - 0 c - zona 5 - cortar - particular - 0 c - zona 5 - cortar - particular - 0 c - zona 5 - cortar - particular - 0 c - zona 5 - cortar - particular - 0 c - zona 5 - cortar - particular - 0 c - zona 5 - cortar - particular - 1 solo falta que agregue los dias en los cuales tiene valor mayor a 0.. gracias y sigo atento a su ayuda.. |
|
MSN
|
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3849 |
Enviado: 27/Enero/2021 a las 22:08 |
Y por que no lo dejas como esta y solo borras las filas que tengan 0 en cantidad-dia?
Lo mas facil es ir abajo del todo y en un bucle inverso ir borrando todos los que tengan valor 0 Con eso te vale lo que tienes y solo necesitas annadir un bucle de borrado al final Un saludo. Luis
|
|
El Búho es un pajarraco
|
|
Prizionero
Nuevo Unido: 01/Diciembre/2011 Localización: Chile Estado: Sin conexión Puntos: 19 |
Enviado: 01/Febrero/2021 a las 23:22 |
Al final lo deje asi, gracias
|
|
MSN
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |