Estoy tratando de crear un función en excel, pero no me funciona

Public Function clasif(A As Integer)
Dim W As String

If A >= 21.926 And A <= 24.033 Then
          W = 1
    Else

If A > 24.033 And A <= 26.667 Then
        W = 2
    Else
If A > 26.667 And A <= 29.301 Then
    W = 3
Else
clasif = W
End If
End If
End If
End Function

¿Dónde podría estar el error?

3 respuestas

Respuesta
1

Sin entender que es lo que quieres que haga la función, difícil saberlo, pero casi seguro que el error está en el último else

Else
clasif = W
End If

Ya que de esa forma, la función solo se asigna cuando los valores están fuera de todos los rangos anteriores

Respuesta
1

No tengo muy claro qué es lo que necesitas hacer, pero mira si te sirve esto:

Public Function clasif(A As Double) As Byte
    If (A >= 21.926 And A <= 24.033) Then
        clasif = 1
        Exit Function
    End If
    If (A > 24.033 And A <= 26.667) Then
        clasif = 2
        Exit Function
    End If
    If (A > 26.667 And A <= 29.301) Then
        clasif = 3
        Exit Function
    End If
    clasif = 0
End Function

Saludos_

Respuesta
1

El problema está en la declaración inicial de tu variable:

Public Function clasif(A As Integer)

Cuando le pasas como parámetro un valor como 22.156, entonces A toma solamente el número entero: 22

Cambia la declaración a Double, como lo puso en su código jrgces.

En ocasiones cuando utilizas más de una selección, es más práctico utilizar la sentencia CASE:

Public Function clasif(A As Double)
  Select Case A
    Case 21.926 To 24.033:  clasif = 1
    Case 24.034 To 26.667:  clasif = 2
    Case 26.668 To 29.301:  clasif = 3
    Case Else:              clasif = 0
  End Select
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas