Macro para utilizar el Switch (case)

Necesito la manera de poder ocupar el comando o sentencia case en Excel, ya que los 7 ifs anidados que se permiten no me es suficiente, necesito poner varias condiciones, por ejemplo:
Si A2=1, entonces...... , Si A2=2, entonces, Si A2=20,.......
Mas en especifico aqui esta mi formula, pero necesito meter mas anidaciones.
=SI($I$1=7,PROMEDIO(C3:I3)*$Z$1/100,SI($I$1=6,PROMEDIO(C3:H3)*$Z$1/100,SI($I$1=5,PROMEDIO(C3:G3)*$Z$1/100,SI($I$1=4,PROMEDIO(C3:F3)*$Z$1/100,SI($I$1=3,PROMEDIO(C3:E3)*$Z$1/100,SI($I$1=2,PROMEDIO(C3:D3)*$Z$1/100,SI($I$1=1,PROMEDIO(C3:C3)*$Z$1/100,"F")))))))
Respuesta
1
Efectivamente, Excel puede mejorar en esa parte. Como tu caso necesita evaluar varias condiciones a partir de una sola celda, entonces lo más recomendable es emplear una mixtura de funciones que hagan una maravilla por nosotros.
*****
1.- Abrir un nuevo libro de Excel y situate en Hoja1. En Hoja1 digita los siguientes valores en las celdas indicadas:
I1: 4
C3: 15 | D3: 12 | E3: 14 | F3: 12 | G3: 5 | H3: 6 | I3: 4
****
3.- Continua en las siguientes celdas en la misma Hoja1:
B15: 7 | C15: C3:I3
B16: 6 | C16: C3:H3
B17: 5 | C17: C3:G3
B18: 4 | C18: C3:F3
B19: 3 | C19: C3:E3
B20: 2 | C20: C3:D3
B21: 1 | C21: C3:C3
****
3.- Como veras desde C15 hasta C21 hemos ingresado las REFERENCIAS DE LAS CELDAS. Esto nos servirá para emplear una megaformula.
=SI(ESERROR(PROMEDIO(INDIRECTO(BUSCARV(I1;B15:F21;2;FALSO)))*$Z$1/100);"F";PROMEDIO(INDIRECTO(BUSCARV(I1;B15:F21;2;FALSO)))*$Z$1/100)
[Fijate si tu separador de argumento de funciones es punto y coma o coma. Yo he empleado punto y coma ";"]
****
4.- Fíjate que hemos empleado la función Buscarv para realizar una búsqueda y que nos devuelva la referencia. En nuestro ejemplo I1 es 4, por tanto en nuestra tabla que esta en B15:C21 con la fórmula encontrara aquel valor que sea igual a 4, y extraerá la celda C18, dado que el valor que esta en C18 esta asociado al numero 4. Luego ese valor nos servirá para convertirla en referencia con la función Indirecto.
****
5.- Fíjate ademas que la fórmula hace referencia al rango c15:c21, por lo que es posible que esto se amplíe. No tendrás problemas ahora en tu caso. Puedes realizar varias condiciones a partir del valor de una celda.
***
Espero haberte ayudado en tu caso.
PD. El valor de la fórmula en A15 es 13.25. La fórmula funciona y esta probada.
Christian

1 respuesta más de otro experto

Respuesta
1
Revisá la función Elegir que por lo que ponés en el ejemplo hace lo que querés; el comando sería
=Elegir(Valor, primero, segundo, tercero, ...)
Valor indica cual de los demás elementos querés, por lo que sería bastante parecido al Case (en tu caso que tenés todos losvalores aplica perfecto...)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas