En Excel, ¿hay una forma menos repetitiva de escribir `= IF (<Expression A> = 0,“ (none) ”, <Expression A>)`?

1

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)

Ajedi32
fuente
No, porque la Expresión A depende de la posición de la celda en la que se encuentra. IE 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.)
Ajedi32
= / Lo siento, supongo que fue bastante confuso. Esa es solo la expresión que estoy usando como expresión A. El punto es que contiene referencias relativas (IE C2), por lo que si lo coloco en una celda diferente obtendrá un valor diferente.
Ajedi32
Sin embargo, aparte de eso, preferiría no saturar mi hoja de cálculo con celdas adicionales para contener la Expresión A. El objetivo de esta pregunta es eliminar el desorden adicional (no hay razón para que no pueda simplemente copiar / pegar la Expresión A en ambas partes de la declaración IF, pero eso sería realmente desordenado).
Ajedi32
2
@ Ajedi32: Todavía no entiendo completamente por qué no puede calcular la expresión A en una celda y tener el cheque para 0 en la siguiente celda. En el peor de los casos, debe compensar su columna en uno, es decir 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.
Peter Albert

Respuestas:

7

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)"

barry houdini
fuente
0

'No', sujeto a la advertencia habitual, no sin VBA.

Pero con un enfoque diferente puede ahorrarse algunos problemas, digamos con el formato condicional.

nueces
fuente
0

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 final

La DISPLAY_0_DEFAULTfunción hace lo que describiste en tu pregunta, tomando "Expresión A" como argumento. La DISPLAY_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:

ejemplo usando DISPLAY_0_DEFAULT y DISPLAY_3_ARGS

Scott
fuente
-1

Hay un par de opciones:

Columna oculta

Puede escribir <Expression A>en una celda separada en una columna oculta, luego consulte eso.

    Column A           Column B
    (hidden)

=<Expression A>  =IF(A1=0,"(none)",A1)

Formato de número

Solo usa la fórmula =<Expression A>, no te preocupes por la IFfunción.

Establezca el formato de la celda en Personalizado: 0;-0;"(none)"

Hand-E-Food
fuente
¿Alguna razón para el voto negativo?
Hand-E-Food