Hace unos días, leyendo el periódico y las noticias de política me fijé en los datos de las encuestas y estimaciones de voto que ofrecen los medios de comunicación. Mientras leía, pensaba en la posibilidad de utilizar Excel para realizar encuestas. Puede parecer algo sencillo, pero no lo es tanto si queréis automatizar la obtención de los datos de la encuesta.
Vamos a poner un ejemplo práctico, y vamos a imaginar que debemos hacer una encuesta sobre Excel 🙂 para ello utilizaré varias preguntas y un combobox con varias respuestas (a las que asignaremos un valor numérico).
Las preguntas serán:
– ¿Utilizas Excel en tu trabajo?
– ¿Te ayuda Excel en tu trabajo diario?
– ¿Te forman en tu empresa para el manejo de Excel?
– ¿Crees que es importante tener conocimientos sobre Excel?
Las respuestas serán las mismas para las tres preguntas:
– Mucho. (con un valor numérico de 3 puntos)
– Bastante. (con un valor numérico de 2 puntos)
– Poco. (con un valor numérico de 1 punto)
– Nada. (con un valor numérico de 0 puntos)
Así quedaría:
La idea es que cuando pulsemos el botón “VALORACIÓN”, nos muestre un resultado único fruto de la suma de los valores numéricos asignados los 4 combobox. Es decir, que si elegimos en todos los Combos “MUCHO”, el resultado será de 12 y si elegimos “NADA” (espero que no), será 0.
La hoja2 de archivo se utiliza para guardar las Respuestas a la encuesta, a partir de las cuales crearemos un nombre definido “ENCUESTA” para llenar los combos. También utilizaremos la hoja2 para almacenar las puntuaciones.
El código para realizar este trabajo puede hacerse de varias formas, precisamente con el objeto de evitar realizar un sinfín de sentencias “if”, la mejor alternativa que he considerado es realizar un bucle For – Next que vaya asignando en una hoja las puntuaciones de todos los combos según el valor de su respuesta. El código:
Sub Encuesta()
With Sheets(1)
'Declaramos variables
Dim i As Double
Dim Combo As MSForms.ComboBox
'Comenzamos el bucle indicando el número de combos (4 en este caso)
For i = 1 To 4
Set Combo = .Shapes("ComboBox" & i).OLEFormat.Object.Object
'Procedemos a realizar un condicional breve indicando que cuando se produzca la condición
'se asigne el valor del combo en la línea que proceda de la hoja2, en esta caso en las 4 primeras
'líneas, dado que aprovechamos la variable (i)
'MUCHO
If Combo.Value = "MUCHO" Then
Sheets(2).Cells(i, 2) = CDbl("3")
End If
'BASTANTE
If Combo.Value = "BASTANTE" Then
Sheets(2).Cells(i, 2) = CDbl("02")
End If
'POCO
If Combo.Value = "POCO" Then
Sheets(2).Cells(i, 2) = CDbl("1")
End If
'NADA
If Combo.Value = "NADA" Then
Sheets(2).Cells(i, 2) = CDbl("0,0")
End If
'VACÍO
If Combo.Value = Empty Then
Sheets(2).Cells(i, 2) = CDbl("0,0")
End If
Next
'Una vez finalizado el proceso, sumamos el rango con los números
.Cells(18, 6) = Application.Sum(Worksheets(2).Range("B1:B4").Value)
End With
End Sub
Después de aplicar la macro indicada, ya tenéis el resultado de la encuesta 🙂 y como hemos elegido MUCHO, tenemos una puntuación de 12 ¡Muy bien!
Descarga el archivo de ejemplo pulsando en: BUCLE FOR – NEXT EN COMBOBOX