none
Extraer el valor maximo y minimo de una columna de un Datagridview RRS feed

  • Pregunta

  • Muy buenas,

    Necesito ayuda para extraer el mayor y el menor de los datos contenidos en una columna de un Datagridview. El problema es que los valores contienen el símbolo + intercalado (143+650, 0+100, 15+840...). Estoy intentando utilizar el código que detallo a continuación, pero me he quedado bloqueado intentando de que ignore este símbolo, ya que me arroja el error "La cadena de entrada no tiene el formato correcto".

    Gracias de antemano

    Un saludo

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim VMaximo As Integer = 0
            Dim VMinimo As Integer = Integer.MaxValue
                    For Each Row As DataGridViewRow In DGVinforme.Rows
                If Not Row.IsNewRow Then
        
                    If Convert.ToInt32(Row.Cells("Pk_Inicio").Value) > VMaximo Then
                        VMaximo = Convert.ToInt32(Row.Cells("Pk_Inicio").Value)
                    End If
                    If Convert.ToInt32(Row.Cells("Pk_Inicio").Value) < VMinimo Then
                        VMinimo = Convert.ToInt32(Row.Cells("Pk_Inicio").Value)
                    End If
                End If
            Next
            MessageBox.Show(String.Format(VMaximo, VMinimo))
    
        End Sub

    jueves, 10 de enero de 2019 14:45

Respuestas

  • Vale, entonces es la primera de las opciones, la que yo llamé "concatenar".

    For Each Row As DataGridViewRow In DGVinforme.Rows
                If Not Row.IsNewRow Then
                    Dim valor as Integer = Convert.ToInt32(Row.Cells("Pk_Inicio").Value.Replace("+", "")) 
                    If valor > VMaximo Then
                        VMaximo = valor 
                    End If
                    If valor < VMinimo Then
                        VMinimo = valor 
                    End If
                End If
    Next
    

    jueves, 10 de enero de 2019 15:56

Todas las respuestas

  • [...] El problema es que los valores contienen el símbolo + intercalado (143+650, 0+100, 15+840...). [...] pero me he quedado bloqueado intentando de que ignore este símbolo [...]

    Exactamente, ¿qué quieres decir con "intentando que ignore el símbolo"? ¿Quieres concatenar el número de la izqueirda y el de la derecha y buscar el máximo y mínimo del número resultante? ¿Quieres sumar el número de la izqueirda y el de la derecha y buscar el máximo y mínimo del número resultante? ¿Quieres separar los dos números y buscar el máximo y mínimo de todos los números que así resultarían (serían el doble que la cantidad de filas)? ¿Alguna otra operación distinta de las anteriores?
    jueves, 10 de enero de 2019 15:09
  • Hola Alberto y gracias por tu pronta respuesta.

    Lo que necesito es que busque en un columna especifica la celda de menor valor y si su valor es 1+000 me arroje 1000 y si la celda de mayor valor contiene 172+350 me arroje 172350.

    jueves, 10 de enero de 2019 15:38
  • Vale, entonces es la primera de las opciones, la que yo llamé "concatenar".

    For Each Row As DataGridViewRow In DGVinforme.Rows
                If Not Row.IsNewRow Then
                    Dim valor as Integer = Convert.ToInt32(Row.Cells("Pk_Inicio").Value.Replace("+", "")) 
                    If valor > VMaximo Then
                        VMaximo = valor 
                    End If
                    If valor < VMinimo Then
                        VMinimo = valor 
                    End If
                End If
    Next
    

    jueves, 10 de enero de 2019 15:56
  • Para obtener el valor ya sin el signo usa:

    Dim miValor as Decimal

    miValor = val(replace("172+350","+",""))

    ahora en miValor tendrás 172350, y así sucesivamente.

    Saludos

    jueves, 10 de enero de 2019 16:00
  • Muchas gracias Alberto, eso es lo que necesito
    jueves, 10 de enero de 2019 16:07
  • Ok Muchas gracias.
    jueves, 10 de enero de 2019 16:08