En Excel, tengo una expresión larga y compleja (Expresión A) que estoy usando en una fórmula. Quiero que esta fórmula devuelva el valor de la Expresión A, excepto en el caso en que esa expresión sea igual a algún valor específico (0, por ejemplo), en cuyo caso devuelve algo más, como "(ninguno)".
¿Hay alguna forma de escribir =IF(<Expression A> = 0, "(none)", <Expression A>)que no requiera que repita la totalidad de la Expresión A dos veces? (Más o menos como IFERRORfunciona, excepto con una condición personalizada)
microsoft-excel
worksheet-function
Ajedi32
fuente
fuente

IFERROR(INDEX(Table1,ROWS(C$2:C2),COLUMN(C2)), IFERROR(INDEX(Table2,ROWS(C$2:C2)-ROWS(Table1),COLUMN(C2)), ""))(Esta es la fórmula real que estoy usando para la Expresión A.)COLUMN(C2)-1. La ventaja, aparte de una fórmula más limpia, es que reduce a la mitad el tiempo de cálculo, ya que la operación debe realizarse solo una vez. Y para evitar abarrotar lo visual, simplemente oculte la columna con la expresión A.Respuestas:
En el caso en que desee mostrar algo más en lugar de cero específicamente , podría forzar un error cuando la expresión se resuelva a cero dividiendo 1 por ese resultado, por ejemplo, con la función IFERROR, disponible en Excel 2007 o posterior
=IFERROR(1/(1/<Expression A>),"(none)")o use un formato personalizado donde cero se muestre como "(ninguno)", por ejemplo
0;-0;"(none)"fuente
'No', sujeto a la advertencia habitual, no sin VBA.
Pero con un enfoque diferente puede ahorrarse algunos problemas, digamos con el formato condicional.
fuente
Esto se puede hacer con bastante facilidad en VBA. Aquí hay un par de funciones de ejemplo:
Función DISPLAY_0_DEFAULT (exp_val) Si exp_val = 0 Entonces DISPLAY_0_DEFAULT = "(ninguno)" Más DISPLAY_0_DEFAULT = exp_val Terminara si Función final Función DISPLAY_3_ARGS (exp_val, test_val, display_val) Si exp_val = test_val Entonces DISPLAY_3_ARGS = display_val Más DISPLAY_3_ARGS = exp_val Terminara si Función finalLa
DISPLAY_0_DEFAULTfunción hace lo que describiste en tu pregunta, tomando "Expresión A" como argumento. LaDISPLAY_3_ARGSfunción hace lo mismo, excepto que le permite especificar el "valor específico" (para comparar) y el valor a mostrar si "Expresión A" coincide con el "valor específico". Aquí hay una ilustración de su uso:fuente
Hay un par de opciones:
Columna oculta
Puede escribir
<Expression A>en una celda separada en una columna oculta, luego consulte eso.Formato de número
Solo usa la fórmula
=<Expression A>, no te preocupes por laIFfunción.Establezca el formato de la celda en Personalizado:
0;-0;"(none)"fuente