Selección de mayor o menor valor de 2 columnas

Hola a todos, trabajando me ha surgido una duda.
Resulta que tengo el siguiente cuadro:
Nombre de tabla: CABLE_N2XSEY
__________________________
                         Amperajes
                   Enterrado Aire
25mm2 145 135
50mm2 205 200
120mm2 340 360
150mm2 385 410
__________________________
Como se podrán dar cuenta no puedo asegurar que los valores de una columna sean los mínimos o máximos, según mi conveniencia.
Necesito que la siguiente fórmula: =buscarv(50mm2;CABLE_N2XSEY;"...???...";FALSO)
Resulte: 200 (Si necesito el menor) o 205 (Si necesito el mayor).
Si se puede por favor menciónenme una solución para "n" columnas de análisis.
1

1 Respuesta

165.775 pts. Más de 35 años en la informática y más de 20 trabajando...
Sólo se me ocurren dos formas:
- La más sencilla es que en una nueva columna pongas el valor menor de las dos anteriores y después elijas ese valor en el BuscarV.
- Algo más complicada sería programar una función similar a "BuscarV" que te devuelva el menor de los dos valores. Podría ser algo así:
Function buscarMenor(ByVal valorBuscado As String, ByRef rangoCeldas As Range, ByVal nCol1 As Integer, ByVal nCol2 As Integer) As Variant
    Dim maxCol As Integer
    Dim i As Integer
    Dim minVal As Double
    Dim auxSalida As Variant
    If nCol1 > nCol2 Then maxCol = nCol1 Else maxCol = nCol2
    If maxCol > rangoCeldas.Columns.Count Then ' Error han solicitado una columna que no hay en el rango
        buscarMenor = "error: columnas incorrectas"
        Exit Function
    End If
    auxSalida = Null
    For i = 1 To rangoCeldas.Rows.Count
        If rangoCeldas.Cells(i, 1) = valorBuscado Then ' Encontrado
            If rangoCeldas.Cells(i, nCol1) > rangoCeldas.Cells(i, nCol2) Then
                minVal = rangoCeldas.Cells(i, nCol1)
              Else
                minVal = rangoCeldas.Cells(i, nCol2)
            End If
            If IsNull(auxSalida) Then auxSalida = minVal
            If auxSalida > minVal Then auxSalida = minVal
        End If
    Next i
    If IsNull(auxSalida) Then
        buscarMenor = "Error: Texto no encontrado"
      Else
        buscarMenor = auxSalida
    End If
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas