Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

USo de Macros

Estas en el tema de USo de Macros en el foro de Visual Basic clásico en Foros del Web. Saludos, Yo uso Visual 6 y necesito saber como puedo crear un macro para poder editar un reporte en Excel. Me explico, Tengo un reporte ...
  #1 (permalink)  
Antiguo 14/02/2005, 15:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 1
Antigüedad: 19 años, 2 meses
Puntos: 0
USo de Macros

Saludos,
Yo uso Visual 6 y necesito saber como puedo crear un macro para poder editar un reporte en Excel.

Me explico, Tengo un reporte en excel el cual tiene una cantidad de celdas resumidas por hora en intervalos de 15 minutos, entonces necesito el reporte solo por hora y uno de los campos que me saque el promedio de dichos intervalos.

Tengo el reporte asi:
Hora || Valores || Promedio
2005-jan-01 00:15||100||50
2005-jan-01 00:30||10 ||100
2005-jan-01 00:45||20 ||50
2005-jan-01 01:00||100||100


Yo lo necesito asi:
Hora|| Valores|| Promedio
2005-jan-01 01:00 ||230||75 --- 300/4

Gracias Anticipadas

Última edición por Ambershak; 14/02/2005 a las 15:42
  #2 (permalink)  
Antiguo 16/02/2005, 11:14
Avatar de Mosiah  
Fecha de Ingreso: mayo-2002
Ubicación: Vitoria - Madrid
Mensajes: 229
Antigüedad: 22 años
Puntos: 0
Si en la tabla excel siempre tienes 4 registros por hora únicamente tendrías que recorrer hasta encontrarte una celda vacía la columna eh ir sumando los valores de las columnas "Valores" y "Promedio".
El código sería algo así:

Sub macro1()
Dim valor
Dim promedio
Dim i
i = 1
Do While (Range("a" & i).Text <> "")
valor = 0
promedio = 0
For j = 0 To 3
valor = valor + Val(Range("b" & (i + j)).Text)
promedio = promedio + Val(Range("c" & (i + j)).Text)
Next
promedio = promedio / 4
Range("b" & (i + 3)).Select
ActiveCell.FormulaR1C1 = valor
Range("c" & (i + 3)).Select
ActiveCell.FormulaR1C1 = promedio

Range("A" & i).Select
Selection.EntireRow.Delete
Range("A" & i).Select
Selection.EntireRow.Delete
Range("A" & i).Select
Selection.EntireRow.Delete

i = i + 1

Loop

End Sub

Si no hay cuatro por cada hora sería cuestión de ir comparando los textos de la columna A.

;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:02.