|
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
|