Mostra solo un risultato di una formula se soddisfa determinati criteri


6

Mi piace mantenere puliti i fogli di calcolo Excel. Quindi, spesso le volte finisco per scrivere affermazioni come questa:

IF([formula x]=[value],"",[formula x])

Ciò che in sostanza dice è che se la formula corrisponde a un determinato criterio, non visualizzare il risultato, altrimenti visualizza il risultato.

In alcuni casi, [formula x] viene ripetuto lungo un'intera colonna di celle e ogni cella ha un riferimento in [formula x] che punta alla cella sopra di esso. Per evitare errori di formula, devo aggiungere un altro strato in questo modo:

IF(C2="","",IF([formula x]=[value],"",[formula x])

Tuttavia, soprattutto quando [formula x] è molto lungo, questo può portare a una formula finale che sembra molto più complicata di quanto non sia e diventa molto più difficile da risolvere e mantenere di quanto dovrebbe essere.

Ecco un esempio orribile ...

Formula base:

=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)

Aggiungi il blanking condizionale:

=IF(C2="","",IF(IF(A3>=$E$11,C2+(C2*($F$2/12)-$E$9),C2+(C2*($F$2/12))-$E$7)<=0,"",IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)))

Una formula già molto lunga è più che raddoppiata, così da poter visualizzare uno spazio (o qualsiasi altro valore scelto, se è per questo) quando quella stessa formula soddisfa una determinata condizione. Se provo a farlo su un'intera riga, a seconda della formula iniziale, potrei facilmente incorrere in errori di riferimento circolari.

C'è un modo per auto-referenziare una formula o un argomento esistente all'interno della stessa cella, o forse un'altra funzione o caratteristica che può essere utilizzata per ottenere questo risultato in modo più pulito?

Una funzione che fa quello che sto cercando potrebbe essere così:

=FnName([base formula],[match condition],[condition result])

L'argomento 1 è la formula di base, l'argomento 2 è la condizione che mi interessa per la corrispondenza. L'argomento 3 è il risultato da visualizzare se la condizione corrisponde. Nel caso in cui la condizione non corrisponda, la funzione restituisce il risultato della formula di base.


Stai cercando intervalli denominati. Possono essere utilizzati per memorizzare formule che puoi fare riferimento in qualsiasi modo tu voglia.
wbeard52

Risposte:


3

Hai pensato di valutare la formula in una cella nascosta (o in una cella su un altro foglio di lavoro) e quindi eseguire il blanking condizionale in base al valore nella cella nascosta invece di dover immettere la formula due volte. Non conosco l'intero contesto in cui lavori, ma ho fatto qualcosa di simile con qualche successo in passato.


Bella idea, ma questo aggiunge solo un po 'di confusione quando andrò a rivedere il foglio di calcolo in seguito, poiché la funzione primaria della cella non è più rappresentata all'interno di se stessa.
Iszi

2

È possibile ricorrere a una funzione VBA per ripulire la sintassi della formula. Ad esempio, è possibile inserire qualcosa di simile in un modulo (premere alt + F11 , quindi inserisci & gt; & gt; Modulo):

Option Explicit
Public Function BLANKIF(checkcell As String, notb As Variant, Optional checkcond As String) As Variant
If checkcell = checkcond Then
    BLANKIF = ""
Else
    BLANKIF = notb
End If
End Function

Quindi, per usare questo per applicare il blanking condizionale a

=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)

Tu useresti

=BLANKIF(C2,IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7))

Se si desidera oscurare la cella se C2 = "omg", dovresti aggiungere un terzo argomento opzionale:

=BLANKIF(C2,IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7),"omg")

1

Puoi usare Conditional Formatting per raggiungere il tuo obiettivo.

Rimuovi tutti gli elementi extra dalla formula, lasciando solo la formula di base

Applicare a Format only cells that contain condizione con i vostri criteri blnaking

Quando la condizione di oscuramento è vera, applicare un formato di numero personalizzato di ;;;

Alternativa per Excel 2007 o versioni successive

IFERROR(value, value_if_error)

Dall'aiuto di Excel:

Restituisce un valore specificato dall'utente se una formula restituisce un errore; in caso contrario, restituisce il risultato della formula. Utilizzare la funzione IFERROR per intercettare e gestire gli errori in una formula.


Non sono sicuro che ciò funzionerà in alcune delle situazioni più avanzate che ho descritto sopra. Il problema specifico qui è che questo non farà (a meno che manchi qualcosa) in realtà vuoto il valore risultante della cella - farà solo la cella apparire vuoto. Quindi, le formule che richiedono valori che non esistono continueranno ad essere ignorati.
Iszi

Hai ragione, questo nasconde l'errore, non lo impedisce - ho preso la tua dichiarazione do not display the result - otherwise, display the result letteralmente. Ho aggiunto un'alternativa (ma solo per Excel 2007 o successivo)
chris neilsen

Aspetta un secondo... IFERROR il valore predefinito della formula eseguita correttamente è predefinito? Ho sempre usato un nidificato IF / IFERROR perché non pensavo IFERROR ha fatto qualcosa per le formule senza errori. Esempio: =IF(IFERROR(A1+1,1)=1, "Error", A1+1) Quindi, sembra che la soluzione ideale sia in realtà una combinazione di IFERRORE e blanking condizionale.
Iszi

2
Giusto per essere chiari: IFERROR(A1+1,"Error") tornerà Error Se A1+1 è un errore, altrimenti restituirà il risultato di A1+1. Non è richiesta alcuna ripetizione della formula testata o nidificazione.
chris neilsen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.