Tengo una tabla donde el usuario agrega una fórmula química agregando elementos uno por uno (la tabla tiene 5 filas) y estoy tratando de calcular el grado de insaturación de dos maneras. El usuario tiene que especificar la forma escribiendo 1 o 2 en una celda y luego está esta declaración if:
=IF(N16=1,((2*IF(ISBLANK(C8),0,(C8*(D8-2)))-(IF(ISBLANK(C9),0,(C9*(D9-2))-IF(ISBLANK(C11),0,(C11*(D11-2))+IF(ISBLANK(C12),0,(C12*(D12-2)))/2),(2+(IF(ISBLANK(C8),0,(C8*(D8-2))+IF(ISBLANK(C9),0,(C9*(D9-2))+IF(ISBLANK(C11),0,(C11*(D11-2))+IF(ISBLANK(C12),0,(C12*(D12-2)))))))))
Esos ESBLANCOS son para verificar si hay un elemento escrito en la celda o no.
Respuesta1
Bueno, es difícil ver el sentido de lo que estás haciendo con solo mirar esta fórmula.
SIse toma como esencialmente su plan, con la excepción del error que informa Excel, entonces tiene el siguiente concepto en su fórmula:
SI alguna condición (N16=1 en este caso) es VERDADERA, entonces informe ESTO (lo que sea "ESTO") y si no es VERDADERO, informe ESTO (lo que sea "ESTO") DE TODOS MODOS.
Eso se reduce a ser lo mismo que lo siguiente:
=IF(A1=1,50,50)
El punto es que si obtienes los mismos resultados para VERDADERO y FALSO, entonces no tiene sentido el archivo IF()
. Tenga en cuenta que puede haber razones externas a la lógica de la situación y, quién sabe, puede aplicarse alguna de ellas. Dado que no proporciona información significativa para resolver ESO, no se puede decir. Pero si ninguno lo hace, y eso parece muy probable, ¿por qué utilizarlo IF()
?
Entonces, aquí solo importa el resultado de VERDADERO o FALSO (ya que son iguales). Puedes simplificar tu fórmula simplemente usando una de esas partes de la fórmula.
Eso es si quieres "simplificarlo". Si prefieressimplificar MUCHOluego considere lo que hace cada prueba. Su resultado básico en cada prueba es restar 2 de alguna celda y luego multiplicarlo por la celda de prueba. Fresco. Si esa celda de prueba está en blanco, Excel considerará que es 0 y esa multiplicación dará 0. Entonces, ¿por qué molestarse en comprobar si está en blanco si el motivo para hacerlo es que el resultado sea 0?Sólo la multiplicación real hará eso por ti sin necesidad de nada más.Si deja de lado el trabajo extra y la IF()
idea completa, obtendrá lo siguiente:
=(2 * C8*(D8-2) - C9*(D9-2) - C11*(D11-2) + C12*(D12-2) ) /2
y como no parece haber razón para multiplicar eso por 2, luego dividirlo por 2, sácalo también:
=C8*(D8-2) - C9*(D9-2) - C11*(D11-2) + C12*(D12-2)
Asumiré que el esperado "C10*(D10-2)" no está ahí por buenas razones y seguiré adelante.
Deteniendo la simplificación en este punto (ya que de todos modos, técnicamente hablando, cualquier cosa más es "simplificar" más que "simplificar" en este caso), señalaría una gran ventaja de usar lo anterior y no su fórmula:
Es tan simple y fácil de escribir o generar, que debería ser difícil que ocurran errores de entrada tontos, y debería ser extraordinariamente fácil de descubrir si ocurren. El contraste será su fórmula y la ventaja debería ser fácil de ver.
Eso, y no los trucos particulares del oficio anterior, es la parte importante de esta respuesta.