MS Excel 2003: cree una función personalizada con más de 7 funciones If anidadas

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Excel 2003: cree una función personalizada con más de 7 funciones If anidadas

Este tutorial de Excel muestra cómo crear una función personalizada para probar más de 7 condiciones IF en Excel 2003 y versiones anteriores (con capturas de pantalla e instrucciones paso a paso).

Problema: en Microsoft Excel 2003/XP/2000/97, tengo una fórmula que prueba 7 condiciones y devuelve un valor diferente si cada condición es verdadera. Sin embargo, ahora necesito probar un total de 12 valores posibles. La limitación de los IF anidados es que solo puede anidar hasta 7. ¿Hay alguna prueba para reemplazar esta fórmula de modo que pueda probar 12 valores en lugar de 7?

=SI(A1=”10X12″,140,SI(A1=”8×8″,64,SI(A1=”6×6″,36,SI(A1=”8×10″,80,SI(A1=”14×16″ ,224 ,SI(A1=”9×9″,81,SI(A1=”4×3″,12))))))))

R: No hay una fórmula alternativa integrada en Excel, pero puede escribir su propia función en VBA y luego llamar a esta nueva función.

propina: Si tiene Excel 2016, pruebe la nueva función IFS (y especifique hasta 127 criterios).

Veamos un ejemplo.

Descargue la hoja de cálculo de Excel (que se muestra a continuación)

En nuestra hoja de cálculo, creamos una función VBA personalizada llamada CalcValue. Esta función acepta una celda como parámetro y devuelve un valor basado en una instrucción compleja IF THEN ELSE. Puede usar este método para anidar hasta o más de 7 condiciones IF.

Puede presionar Alt+F11 para ver el código VBA.

codigo macro

El código de la macro se ve así:

Function CalcValue(pVal As String) As Long

   If pVal = "10x12" Then
      CalcValue = 140

   ElseIf pVal = "8x8" Then
      CalcValue = 64

   ElseIf pVal = "6x6" Then
      CalcValue = 36

   ElseIf pVal = "8x10" Then
      CalcValue = 80

   ElseIf pVal = "14x16" Then
      CalcValue = 224

   ElseIf pVal = "9x9" Then
      CalcValue = 81

   ElseIf pVal = "4x3" Then
      CalcValue = 12

   Else
      CalcValue = 0
   End If

End Function