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
Publicar un comentario