kilimaru | |
| 2007-11-11 02:01 - Respuestas: 5 - Tema nº: 2480941
Características: Windows XP Profesional, celeron.
estimados he aqui la ultima pregunta que tengo de access
si para sumar usamos la expresión =suma([campo1]+[campo2]....), para restar -, para dividir /, para multiplicar *,
como lo hago para promediar dos o mas campos =promedio([campo1] ¿?¿?¿?¿?¿?¿ [campo2]....)
| |
|
|
ebolo | |
|
Re: Ultima pregunta a cerca de access promedio de campo - 2007-11-12 11:19 - Respuesta 2
Hola Kilimaru, pues para hacer la media es tan fácil como sumar los campos y luego dividirlos entre el nº de campos.
media=(campo1+campo2+campo3+ ... +campon)/ n campos.
asegúrate de que sean siempre el mismo nº de campos, para no tener que variar la fórmula
Podrías controlar si hay algún valor o es nulo para que no te dé error de la siguiente forma; en un cuadro de texto debes de poner lo siguiente: = nz(campo1,0)+nz(campo2,0)+nz(campo3,0)/3 (si hay 3 campos).
Deberías controlar también que en los que no hay valor no te lo cuente para hacer la media.
Un saludo.
PD: si tengo tiempo luego te hago un pequeño ejemplo.
| |
|
|
kilimaru | |
|
Re: Ultima pregunta a cerca de access promedio de campo - 2007-11-12 20:37 - Respuesta 3
te lo agradeceria montones | |
|
|
ebolo | |
|
Re: Ultima pregunta a cerca de access promedio de campo - 2007-11-13 20:37 - Respuesta 4
Hola de nuevo...
Suponemos que:
- tabla1 es la tabla donde guardas los datos.
- el campo para filtrar la consulta es 'nombre'. Yo he hecho el ejemplo para el registro de nombre 'Diego'.
- los campos donde guardas las notas, empiezan todas por 'not', por ejemplo: nota1, nota2, nota3,.... Puedes poner tantos campos de nota como quieras. Estos campos están definidos como Dobles en el diseño de la tabla.
Private Sub Comando23_Click()
Dim bd As DAO.Database, t As Integer
Dim rs As DAO.Recordset
Dim suma As Long
Dim dividendo As integer
Set bd = CurrentDb
suma = 0
dividendo = 0
Set rs = bd.OpenRecordset("SELECT * from tabla1 where nombre='Diego'")
For t = 1 To rs.Fields.Count - 1
If Left$(rs.Fields(t).name, 3) = "not" Then
'Aquí controlamos que sólo tenga en cuenta los campos que no son nulos y que no son cero.
If Not IsNull(rs.Fields(t)) And rs.Fields(t) 0 Then
dividendo = dividendo + 1
suma = suma + rs.Fields(t)
End If
End If
Next t
MsgBox "Suma: " & suma & ". Dividendo: " & dividendo & ". Media: " & suma / dividendo
End Sub
Bueno si no te aclaras lo dices.
| |
|
|
kilimaru | |
|
Re: Ultima pregunta a cerca de access promedio de campo - 2007-11-14 03:00 - Respuesta 5
por que campos dobles? y por que filtrados por un caso individual y no a nivel general | |
|
|
|