El presente trabajo busca utilizar VBA para hacer una tabla dinámica que resuma y ordene los resultados de una encuesta de hábitos de estudio en una universidad, hecha con la finalidad de formular un plan de negocios.
Para empezar se muestran los registros de las encuestas realizadas
(Para mayor visualización de la imagen, hacer click en la misma)
Los datos de esta encuesta estan distribuidas en 13 rubros y, por ende, columnas:
- ¿A qué facultad perteneces?
- ¿A qué ciclo perteneces?
- ¿En que distrito vives?
- ¿Cuántas veces por semana preferirías estudiar/hacer trabajo?
- ¿Qué días preferirías estudiar/hacer trabajo?
- ¿En qué horarios preferirías y cuentas con disponibilidad de tiempo para estudiar/hacer trabajos?
- ¿Cuántas horas diarias te dedicas a estudiar/hacer trabajos?
- ¿Cómo prefieres estudiar?
- Si estudias en grupo, ¿con cuántas personas aproximadamente?
- ¿Cuánto gastas semanalmente en tus estudios?
- ¿En qué distribuyes tus gastos?
- ¿Usarías un servicio que te ofrece un ambiente de estudio con: cubículos individuales y grupales, cafetería, wifi de banda ancha, pizarras acrílicas, préstamo de útiles, alquiler de gavetas para maquetas y que este ubicado cerca a tu universidad?
- Para terminar...¿Tienes alguna sugerencia o inquietud que darnos respecto a los horarios y servicios?
De estas preguntas, se plantean organizar los resultados de tal forma que la tabla dinámica muestre por facultad y distrito de residencia, cuánto gastan los alumnos por semana en promedio y cuántas horas en promedio diarias invierten en estudiar y hacer trabajos.
Para ello, redactamos lo siguiente en un módulo de Visual Basic:
Sub CrearTabla()
Dim base1 As Worksheet
Dim base2 As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long
'Se define la hoja de trabajo
Set base1 = Worksheets("Hoja2")
'Borrar las tablas dinamicas que se encuentran en la hoja
For Each PT In base1.PivotTables
PT.TableRange2.Clear
Next PT
'Definir el área de entrada y establecer un caché dinamico
Set base2 = Worksheets("Hoja1")
FinalRow = base2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = base2.Cells(1, 1).Resize(FinalRow, 13)
'Nos situamos en la hoja con los datos
Sheets("Hoja1").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)
'Se crea una tabla dinamica en blanco, especiificando la ubicación de salida y nombre de la tabla
Set PT = PTCache.CreatePivotTable(tabledestination:=Worksheets("Hoja2").Range("b4"))
PT.Format xlReport5
'Actualizacion automatica
PT.ManualUpdate = True
PT.AddFields RowFields:=Array("¿A qué facultad perteneces?", "¿En qué distrito vives?") ' , PageFields:="Tienda", ColumnFields:="SKU"
'Establecer los campos de datos
With PT.PivotFields("¿Cuánto gastas semanalmente en tus estudios?")
.Orientation = xlDataField
.Function = xlAverage
.Position = 1
.NumberFormat = "#,##0"
.Name = "Gasto promedio semanal"
End With
With PT.PivotFields("¿Cuántas horas diarias te dedicas a estudiar/hacer trabajos?")
.Orientation = xlDataField
.Function = xlAverage
.Position = 2
.NumberFormat = "#,##0"
.Name = "Promedio horas de estudio diarias "
End With
'Calcular la tabla dinamica
PT.ManualUpdate = False
'PT.ManualUpdate = True
Sheets("Hoja2").Select
End Sub
Al ejecutar estos comandos se optiene la siguiente tabla
(Para mayor visualización de la imagen, hacer click en la misma)
Realizado por Cristina Egocheaga
19/12/2013 a las 6:38 am
excelente trabajo, me gusto el desarrollo del programa