Validación de datos y copiar registros de las columnas y pasar los datos en otra hoja pero por cada columna crear una fila

Necesito que me ayuden a crear los parámetros para un reporte que necesito

En la organización donde laboramos tenemos dos reporte de datos y debemos cargar los datos en ambas y queremos si se puede un solo archivo para los dos reportes

Ejemplo en la hoja 1 que se llama DATA es en donde colocamos los datos de las personas va seguida en fila pero cada registro se hace en las columnas

Como vemos en cada columna esa persona tiene registro y esa misma data la tenemos que pasar otra hoja que se llama variaciones pero con ciertos datos pero cada registro es por fila

Con las siguientes características en la columna A es el código de la compañía que es 01 (puede cambiar), en la columna B es un código por defecto, en la columna C es la ficha de la persona en la columna D es el código de cada descripción de los detalles Ejemplo Libre Convenio 1 el código es el 150, el de H.E.D es el 130 como se puede apreciar en la 1ra imagen, en la columna E si el detalle es por cantidad y en la columna F si el detalle es por monto, la columna G es en blanco, las columnas H y I es valor 0, la columna es la fecha el cual se esta realizando el reporte, las columnas K y L en blanco; las columnas M; N; O; P valor 0, las columnas Q; R; S; y T en blanco; la columna U valor 1 por defecto; y la columna V es un consecutivo.

Tomando en cuenta que las descripciones de detalles y los códigos pueden variar

Existe la posibilidad de ayudarme a crear los parámetros para poder realizar dicho reporte

1 respuesta

Respuesta
1

¿De cuántas líneas (personas) estamos hablando?

¿Todas las líneas siempre tienen todos los campos con valor?

Muchas gracias por responder 

De la primera imagen que es donde se tomaría la data así como puede ser una fila pueden ser muchas al igual que las columnas que pueden ser hasta 15 columnas si posee toda la data

Si la siguiente fila de esos mismos detalles puede ser que estén llenas solo 5 columnas 

Este puede ser el ejemplo    

que solo se llene los tres registro de María Pérez 

Me puedes aclarar la relación que hay entre los valores de las columnas H, I, ¿J de la primera hoja con la columna E de la segunda Hoja?

Parece que la relación sea de que si hay un valor culaquiera en la primera hoja, en la segunda va en la columna E y sus valores son en grupos de 1,2,3... 4,5,6... 7,8,9 si el valor esta en la primera fila de la primera hoja... segunda fila... etc

¿No?

Las columnas I; J el valor es en cantidad y esas deben pasar a la columna E de la segunda hoja los demás son montos que van a la columna F de la 2da hoja. Más bien todo va en relación al código que aparece debajo de la descripción H.E.DE es 130 y H.E.N es 135

¿Entonces la columna H del ejemplo está mal?

Cierto no me fije en ese detalle disculpa

¿El código 150 de libre convenio 1 está en la columna E y F. Es correcto? ¿Depende de su importe que vaya en un sitio u otro?

Indiferente donde este en las columnas de la primera hoja pase el registro a la columna F de la segunda hoja. 

Te adjunto el código. Si hay algo que no es correcto se modifica.

Sub copiar()
Sheets("Hoja1").Select
Range("B9").Select
j = Range("B" & Rows.Count).End(xlUp).Row - 8
rg = Range(Cells(8, 8), Cells(8, 18))
rgt = Application.Transpose(rg)
For i = 1 To j
rgx = Range(Cells(8 + i, 8), Cells(8 + i, 18))
rgxt = Application.Transpose(rgx)
valor = ActiveCell.Value
'MsgBox valor
Sheets("Hoja2").Select
Range(Cells((11 * (i - 1) + 1), 1), Cells(i * 11, 1)).Value = "'01"
Range(Cells((11 * (i - 1) + 1), 2), Cells(i * 11, 2)).Value = "SPI"
Range(Cells((11 * (i - 1) + 1), 3), Cells(i * 11, 3)).Value = valor
Range(Cells((11 * (i - 1) + 1), 4), Cells(i * 11, 4)).Value = rgt
Range(Cells((11 * (i - 1) + 1), 5), Cells(i * 11, 5)).Value = rgxt
Range(Cells((11 * (i - 1) + 1), 6), Cells(i * 11, 6)).Value = rgxt
Range(Cells((11 * (i - 1) + 1), 8), Cells(i * 11, 8)).Value = 0
Range(Cells((11 * (i - 1) + 1), 9), Cells(i * 11, 9)).Value = 0
Range(Cells((11 * (i - 1) + 1), 10), Cells(i * 11, 10)).Value = Date
Range(Cells((11 * (i - 1) + 1), 13), Cells(i * 11, 13)).Value = 0
Range(Cells((11 * (i - 1) + 1), 14), Cells(i * 11, 14)).Value = 0
Range(Cells((11 * (i - 1) + 1), 15), Cells(i * 11, 15)).Value = 0
Range(Cells((11 * (i - 1) + 1), 16), Cells(i * 11, 16)).Value = 0
Range(Cells((11 * (i - 1) + 1), 21), Cells(i * 11, 21)).Value = 1
Sheets("Hoja1").Select
ActiveCell.Offset(1, 0).Select
Next i
Sheets("Hoja2").Select
Columns("E:E").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
Range("E1").Select
Do
If (ActiveCell.Offset(0, -1).Value = 150 Or ActiveCell.Offset(0, -1).Value = 130 Or ActiveCell.Offset(0, -1).Value = 135) Then
ActiveCell.Offset(0, 1).Value = 0
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Value = 0
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell.Value = ""
k = 1
l = 1
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
Cells(l, 22).Value = k
l = l + 1
k = k + 1
Next i
End Sub

Deberás cambiar el nombre de las hojas (hoja1 y hoja2) por los tuyos

Hola gracias por la ayuda pero de da un error te anexo las imágenes

¿Qué puede ser?

Tienes que cambiar los nombres "Hoja1" y "Hoja2" por el nombre de tus respectivas Hojas.

Hoja1 según dices se debe cambiar por DATA

Hoja2 no hay información

Muchas gracias por la ayuda prestada ya lo modifique y funciona excelente 

De nada

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas