Tengo una fórmula larga con la siguiente estructura:
=IF(!X!<>0,!X!+A1,"")
donde ! X! Es una fórmula muy larga.
¿Hay alguna solución para evitar repetir el! X! ¿dos veces? Lo necesito por dos razones:
- Para que la fórmula sea legible para el usuario de la hoja
- Para reducir el tiempo de proceso
Agradezco cualquier ayuda.
Gracias dio
To reduce the process time
entonces obviamente debe almacenar el resultado en algún lugar, de lo contrario, Excel debe volver a calcular el valor nuevamente cuando la condición coincida. La división también es una operación muy costosaRespuestas:
Otro enfoque es utilizar la doble inversión :
Si la fórmula "realmente_ larga" se evalúa a 0 , obtendrá una división entre cero y la
IFERROR()
capturará.Tenga en cuenta que la forma habitual (y la mejor manera) de manejar este requisito es con una celda auxiliar.
fuente
1/1/x
con 100,000 números aleatorios varias veces en Excel, y solo el 1.4% de las veces hubo un error de redondeo. El error relativo máximo que encontré fue 1.6e-16, que es, bueno, efectivamente cero. Además, curiosamente, los enteros nunca mostraron errores de redondeo (probó varios rangos de 0 a 1e14). Entonces, esta respuesta puede ser mal vista desde un punto de vista de pureza / limpieza, pero no desde un punto de vista de cálculo práctico.La respuesta obvia es colocar la fórmula en una celda de trabajo, lejos de la hoja principal. Por ejemplo, si lo usa
H1
, configúrelo en:Su fórmula se convierte en:
Esto es típico de lo que uno haría en cualquier otro lenguaje de programación.
fuente
1/(1/x)
no siempre es exactamente la mismax
), especialmente si se trata de datos enteros. Tampoco es aplicable de manera más general (por ejemplo, verificar menos de cero). (Comentario cruzado con la respuesta aceptada de @ LưuVĩnhPhúc.)¿Realmente necesitas que el resultado esté
""
en el caso falso? Si solo necesita que la celda se vea en blanco (por ejemplo, no usará algo así=ISNUMBER()
más adelante), puede usar el formato condicional para ocultar el contenido en el caso falso.El formato condicional que aplicará a la celda para que no muestre nada es el formato personalizado
""
, como este (está en portugués, pero se entiende):La fórmula en la celda será, como se esperaba, simplemente
=!X!+A1
.La fórmula de formato condicional podría ser
=!X!=0
, pero eso forzaría el recálculo de!X!
lo que no desea (su "Punto 2"). Es mejor aprovechar la célula usando=B1=A1
(suponiendo que nuestra célula sea B1 ), eso implicaría!X! = 0
.Incluso si necesita que el contenido de la celda sea realmente
""
, generalmente se pueden hacer pequeñas modificaciones en la hoja de trabajo para que se pueda utilizar este enfoque. Si ese es el caso, deje un comentario que describa la situación.fuente
Si no puede agregar una columna auxiliar , ¿por qué no agrega una hoja de trabajo completa? Hay varias ventajas para esto:
=IF(X<>0,X+A1,"")
D5
.helper!D5
en la hoja principal.Las desventajas que puedo ver son:
sheetname!D5
lugar de solo comoD5
.Sopesando las ventajas y desventajas, creo que para muchos casos de uso esta es una buena solución. Existen situaciones en las que no es óptimo, aunque no puedo pensar en ninguna en este momento.
fuente
una opción aún no sugerida es crear una función definida por el usuario. Debería activar la pestaña Desarrollador en la barra de menú (google) y crear un módulo.
En la barra de fórmulas entonces harías
NOTA: Esto ahora se convierte en un archivo .xlsx (con macros) y puede necesitar permisos adicionales en una red corporativa, ya que las macros pueden usarse con fines maliciosos y algunos filtros de correo electrónico las bloquearán. Las funciones no están documentadas, por lo que deberá proporcionar notas sobre lo que están haciendo sus funciones y me resulta útil llamar a todas mis funciones udf_xxxxx para que quede claro que no es una función integrada.
También hay otros GOTCHA con UDF. Vea este enlace para algunos buenos consejos http://www.decisionmodels.com/calcsecretsj.htm
fuente