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

Y la ultima captura en acción:

Si tienen alguna duda comenten!!

Comentarios

  1. 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.

    es 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

    ResponderEliminar
  2. 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".
    Desde ya muchas gracias

    ResponderEliminar
  3. 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.

    ResponderEliminar
  4. supongo que quieres lo mismo pero con un listview

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Imprimir directamente ReportViewer a impresora predeterminada

DevComponents DotnetBar 12.5.0.2

Metodo Iterativo Gauss-Seidel en Visual Basic