Sumar y promediar en filas de un DatagridView
Hola programadores de VB, espero que ya esten haciendo uso de la IDE de VS2012 es impresionate y muy versatil, la siguiente entrada es motivacion de un compañero anónimo que me pregunto "Como calculo el promedio de 4 notas en un datagrid quiero que me muestre el promedio en la quinta columna". No es un ejemplo dificil. Como Uds ya saben yo tenia por ahi una entrada que decia promediar columna de un datagridview bueno lo tome como base para hacerle unas modificacion y listo salio.
Este ejemplo puede ser útil para promediar notas de alumnos muy similar al experimentado Excel, les dejo un captura del diseño:
El codigo:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
DataGridView1.Rows.Add(1)
label1.Text = "Numero de items " & DataGridView1.Rows.Count
Dim j As Integer
Dim r As Integer = DataGridView1.Rows.Count - 1
Dim n As Integer = DataGridView1.ColumnCount - 2
j = 0
Do While n > j ' hasta el numero de columnas-2
Dim valor As Double = Val(InputBox("Ingrese valor" & "[" & j + 1 & "]"))
DataGridView1.Item(j, r).Value = valor
j = j + 1
Loop
Sumarypromediar() 'llama a la suma y promedio
Catch ex As Exception
MsgBox("Error al ingresar datos", vbCritical)
End Try
End Sub
Sub Sumarypromediar()
Try
Dim r As Integer = DataGridView1.Rows.Count - 1
Dim suma, promedio As Double
Dim ultimoitem As Integer = DataGridView1.ColumnCount - 2 ' separamos las dos columnas que son de la suma y el promedio
For i As Integer = 0 To ultimoitem
suma = suma + CDbl(DataGridView1.Item(i, r).Value)
Next
promedio = suma / ultimoitem
DataGridView1.Item(ultimoitem, r).Value = Format(suma, "0.000")
DataGridView1.Item(ultimoitem + 1, r).Value = Format(promedio, "0.000")
Catch ex As Exception
End Try
End Sub
End Class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
DataGridView1.Rows.Add(1)
label1.Text = "Numero de items " & DataGridView1.Rows.Count
Dim j As Integer
Dim r As Integer = DataGridView1.Rows.Count - 1
Dim n As Integer = DataGridView1.ColumnCount - 2
j = 0
Do While n > j ' hasta el numero de columnas-2
Dim valor As Double = Val(InputBox("Ingrese valor" & "[" & j + 1 & "]"))
DataGridView1.Item(j, r).Value = valor
j = j + 1
Loop
Sumarypromediar() 'llama a la suma y promedio
Catch ex As Exception
MsgBox("Error al ingresar datos", vbCritical)
End Try
End Sub
Sub Sumarypromediar()
Try
Dim r As Integer = DataGridView1.Rows.Count - 1
Dim suma, promedio As Double
Dim ultimoitem As Integer = DataGridView1.ColumnCount - 2 ' separamos las dos columnas que son de la suma y el promedio
For i As Integer = 0 To ultimoitem
suma = suma + CDbl(DataGridView1.Item(i, r).Value)
Next
promedio = suma / ultimoitem
DataGridView1.Item(ultimoitem, r).Value = Format(suma, "0.000")
DataGridView1.Item(ultimoitem + 1, r).Value = Format(promedio, "0.000")
Catch ex As Exception
End Try
End Sub
End Class
Y la ultima captura en acción:
Si tienen alguna duda comenten!!
Hola espero que estén bien soy nuevo en vb 2010 y quisiera ayuda para un proyecto de visual basic 2010 con un datagridview pero necesito mostrar un desglose de una tabla.
ResponderEliminares decir que una tabla muestre los resultado de otra. (es como un sub nivel)
espero me entiendan
mi email es allanantgarcia100579@yahoo.es y allanantgarcia100579@gmail.com
Hola, en primer lugar el Blog es excelente. Necesito ayuda para que en lugar de sumar y promediar, de como resultado la resta de los datos de dos filas en un tercera. Por ejemplo: tengo una columna "Precio" otra "Cobrado" y quiero calcular "Saldo".
ResponderEliminarDesde ya muchas gracias
Hola, me gustaria me dieran una idea para calcular el promedio de datos dentro de una listview solo necesito mostrar el valor(promedio), por ejemplo en el caso que ustedes tienen de las calificaciones, desearia caalcular el promedio de la "Nota5" de todos los alumnos ingresados a la base. gracias.
ResponderEliminarsupongo que quieres lo mismo pero con un listview
ResponderEliminar