Promediar cada 2 filas en Datagridview

Un saludo programadores, en este post les presento este tema que algunos casos, requerimos que un promedio de un columna salga en particular de dos filas consiguientes. naturalmente obtener el promedio  de una columna n  o de un  grupo de filas es sencillo, pero un poco mas difícil es, en este caso de una serie de valores en una columna dada, obtengamos promedio  de cada 2 valores.


Gráficamente de esta manera,

Creo que quedo mas que entendido, entonces presento el código completo:

Public Class Form1
    Dim cantidad As Integer
    Dim valor As Double
    Dim subtotal As Double
    Private Sub Btnsumar_Click(sender As Object, e As EventArgs) Handles Btnsumar.Click
        Try
            cantidad = Val(InputBox("Ingresar cantidad Nº"))
            valor = Val(InputBox("Ingresar valor"))
            subtotal = cantidad * valor
            '   promediar_porfila()
            rellenargrid()
            desplazar_seleccion(grid1)
        Catch ex As KeyNotFoundException
            MessageBox.Show("Error de concurrencia:" & vbCrLf & ex.Message)
        End Try
    End Sub
    Public Sub desplazar_seleccion(grid As DataGridView)
        Dim jx As Integer = grid.Rows.Count - 1
        grid.Rows(jx).Selected = True
        grid.CurrentCell = grid.Rows(jx).Cells(0)
    End Sub
    Public Function promediar_porfila()
        Dim suma2 As Double
        Dim p As Integer = grid1.CurrentRow.Index
        Dim t As Integer = grid1.Rows.Count 't + 1
        Dim promedio_fila As Double
        Try
            If t = 0 Then
                MsgBox("no hay filas para calcular")
            Else
                If grid1.Rows.Count Mod 2 = 0 Then  'realiza el proceso cada filas pares
                    For m = p To t - 1
                        suma2 = suma2 + CDbl(grid1.Item(3, m).Value)
                        grid1.Item(4, grid1.CurrentRow.Index + 1).Style.BackColor = Color.LightCyan
                    Next
                Else
                End If
                promedio_fila = suma2 / 2   ' hace el promedio
                suma2 = 0     ' resetea a cero la suma en memoria,para tomar nueva partida
            End If
            Return promedio_fila
        Catch ex As DivideByZeroException
            MsgBox("error")
        End Try
    End Function
    Sub rellenargrid()
        Try
            Dim r As Integer
            grid1.Rows.Add(1)
            r = grid1.Rows.Count - 1
            grid1.Item(0, r).Value = r + 1
            grid1.Item(1, r).Value = Format(cantidad, "0.00")
            grid1.Item(2, r).Value = Format(valor, "0.00")
            grid1.Item(3, r).Value = Format(subtotal, "0.00")
            grid1.Item(4, r).Value = Format(promediar_porfila, "0.00")
        Catch ex As Exception
        End Try
    End Sub
End Class


 Mi captura

El ejemplo es un típico calculo de interfaz de punto de venta donde  colocas la cantidad, el valor unitario del producto y te calcula el subtotal y sobre este cada dos filas el promedio, la cual se colorea en cian 


No vemos en otra publicación!


Comentarios

Entradas populares de este blog

Imprimir directamente ReportViewer a impresora predeterminada

DevComponents DotnetBar 12.5.0.2

Metodo Iterativo Gauss-Seidel en Visual Basic