Convetir el diseño de una hoja usando VBA

12/05/2005 - 22:49 por nanchoguti | Informe spam
Buenas tardes.
Es posible a través de VBA, porque son más de 2000 registros, convertir el
diseño de la siguiente hoja.
Diseño Actual.
A B C D
Fecha Procedencia Ensayo Resultado
2005/01/10 Selector1 MgO 1.5
2005/01/10 Selector1 CaO 2.3
...
2005/05/12 Estiba4
2005/05/12 Estiba4 RM1 4.5

Diseño Requerido.
Un registro por fecha y procedencia, en el anterior varios registros para
una misma fecha. Es decir que los diferentes ensayos (son como 20) me
queden como título.

Fecha Procedencia MgO CaO .. RM1 (hasta 20 ensayos)
2005/01/10 Selector1 1.5 2.3 .. 4.8
2005/01/11 Selector2 1.3 2.5 .. 3.4
2005/01/12 Estiba4 2.4 1.3 .. 4.5

Espero haberme hecho entender y que pueda recibir una ayuda, ya que estoy
mas encartado que un caballo en un balcón.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/05/2005 - 03:34 | Informe spam
hola, Hernan !

... mas de 2000 registros, convertir el diseño de la siguiente hoja.
Fecha Procedencia Ensayo Resultado
2005/01/10 Selector1 MgO 1.5
2005/01/10 Selector1 CaO 2.3
...
2005/05/12 Estiba4
2005/05/12 Estiba4 RM1 4.5
... que los diferentes ensayos (son como 20) me queden como título.
Fecha Procedencia MgO CaO .. RM1 (hasta 20 ensayos)
2005/01/10 Selector1 1.5 2.3 .. 4.8
2005/01/11 Selector2 1.3 2.5 .. 3.4
2005/01/12 Estiba4 2.4 1.3 .. 4.5



como se debe 'reportar' [si fuera el caso] resultados... mismo ensayo... misma fecha pero... diferente 'procedencia' ?
cuantas 'procedencias' trabajas? [o que posibilidades existen de que se de el supuesto anterior] ?
o... tantas filas/fecha para todos los ensayos segun las procedencias que 'reporten' en la misma fecha ?

comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 nanchoguti
13/05/2005 - 04:36 | Informe spam
Héctor Miguel wrote:

hola, Hernan !

> ... mas de 2000 registros, convertir el diseño de la siguiente hoja.
> Fecha Procedencia Ensayo Resultado
> 2005/01/10 Selector1 MgO 1.5
> 2005/01/10 Selector1 CaO 2.3
> ...
> 2005/05/12 Estiba4
> 2005/05/12 Estiba4 RM1 4.5
> ... que los diferentes ensayos (son como 20) me queden como título.
> Fecha Procedencia MgO CaO .. RM1 (hasta 20 ensayos)
> 2005/01/10 Selector1 1.5 2.3 .. 4.8
> 2005/01/11 Selector2 1.3 2.5 .. 3.4
> 2005/01/12 Estiba4 2.4 1.3 .. 4.5

como se debe 'reportar' [si fuera el caso] resultados... mismo ensayo...


misma fecha pero... diferente 'procedencia' ?
cuantas 'procedencias' trabajas? [o que posibilidades existen de que se de


el supuesto anterior] ?
o... tantas filas/fecha para todos los ensayos segun las procedencias que


'reporten' en la misma fecha ?

comentas?
saludos,
hector.



Buenas noches Héctor y muchas gracias por responder:
Existen 5 procedencias, y cada procedencia debe generar una nueva fila asi
tenga igual fecha.
O más claro debe existir una única fila para la misma fecha-procedencia.
2005/01/10 selector1 res1 res2 res3 . resn
2005/01/10 selector2 res1 res2 res3 . resn
2005/01/10 estiba4 res1 res2 res3 . resn
2005/01/11 selector1 res1 res2 res3 . resn

2005/12/31 molino7 res1 res2 res3 . resn

Saludos,

Hernán
Respuesta Responder a este mensaje
#3 Héctor Miguel
13/05/2005 - 08:12 | Informe spam
hola, Hernan !

... 5 procedencias, y cada procedencia debe generar una nueva fila asi tenga igual fecha.
... debe existir una unica fila para la misma fecha-procedencia.



prueba con la siguiente macro y si cualquier duda/falla/cambio/... comentas?
saludos,
hector.
estos son mis 'supuestos' [de acuerdo con tu mensaje original] ==1.- tienes ya 'preparada' una hoja para el resumen [la llamo 'Hoja2'] que contiene...
SOLO los 'encabezados' en la fila 1 [Fecha / Procedencia / y las 'n' categorias a partir de 'C1']
2.- en la hoja 'activa' [donde estan los reportes] el rango de datos es 'A1:D100' [modificalo al 'real']
3.- la macro utiliza filtros avanzados para 'detectar de golpe' las coincidencias fecha-procedencia [unicas]
[el codigo ha quedado 'ligeramente' largo, tratando de darle 'versatilidad' -por si cambias de rangos-]
en un moduo de codigo 'normal' ==Sub ReportePorFechas()
Application.ScreenUpdating = False
Dim HojaDestino As String, RangoFiltro As String, RangoDatos As String, _
Fecha As String, Procede As String, _
Celda As Range, Fila As Integer, Col As Byte
HojaDestino = "Hoja2" ' <= pon aqui el nombre 'real' de la hoja 'original' '
RangoFiltro = "a1:d100" ' <= pon aqui el rango 'completo' de la base de datos de los resultados/reportes '
With Range(RangoFiltro)
RangoDatos = .Offset(1, .Columns.Count - 1).Resize(.Rows.Count - 1, 1).Address
End With
With Worksheets(HojaDestino)
Range(RangoFiltro).AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=.Range("a1:b1"), _
Unique:=True
Fecha = .Range(.[a1], .[a65536].End(xlUp)).Address
Procede = .Range(Fecha).Offset(, 1).Address
For Each Celda In Range(RangoDatos)
Fila = Evaluate("Match(" & _
Celda.Offset(, -3).Address & "&" & _
Celda.Offset(, -2).Address & ",'" & _
HojaDestino & "'!" & Fecha & "&'" & HojaDestino & "'!" & Procede & ",0)")
Col = Application.Match(Celda.Offset(, -1), .Rows(1), 0)
.Cells(Fila, Col) = Celda
Next
End With
End Sub
Respuesta Responder a este mensaje
#4 Luis Garcia
13/05/2005 - 11:27 | Informe spam
"Hernan" escribió en...
Buenas tardes.
Es posible a través de VBA, porque son más de 2000 registros, convertir el
diseño de la siguiente hoja.
Diseño Actual.
A B C D
Fecha Procedencia Ensayo Resultado
2005/01/10 Selector1 MgO 1.5
2005/01/10 Selector1 CaO 2.3
...
2005/05/12 Estiba4
2005/05/12 Estiba4 RM1 4.5

Diseño Requerido.
Un registro por fecha y procedencia, en el anterior varios registros para
una misma fecha. Es decir que los diferentes ensayos (son como 20) me
queden como título.

Fecha Procedencia MgO CaO .. RM1 (hasta 20 ensayos)
2005/01/10 Selector1 1.5 2.3 .. 4.8
2005/01/11 Selector2 1.3 2.5 .. 3.4
2005/01/12 Estiba4 2.4 1.3 .. 4.5

Espero haberme hecho entender y que pueda recibir una ayuda, ya que estoy
mas encartado que un caballo en un balcón.




¿ Porque no haces una tabla dinamica ?:


Pones en campo de filas Fecha, Procedencia, en campos de Columna
pones Ensayo y como datos Resultados y tendras los datos (mas o menos)
como los quieres. Si los quieres como datos, pues copias y pegas valores
y yata' :-) Ya diras si te ha servido.

Nota: En diseño de la tabla dinamica puedes modificar muchas cosas:
Poner los valores que quieres para los 'vacios' y 'error' pe. cero,
quitar Totales Generales, etc.

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida