6 votes

Afficher le résultat d'une formule uniquement s'il répond à des critères donnés

J'aime garder mes feuilles de calcul Excel assez propres. Donc, souvent, je finis par écrire des déclarations comme celle-ci :

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

Cela signifie essentiellement que si la formule correspond à un critère donné, il ne faut pas afficher le résultat - sinon, il faut afficher le résultat.

Dans certains cas, [formula x] est répété sur une colonne entière de cellules et chaque cellule a une référence en [formula x] qui pointe vers la cellule située au-dessus. Pour éviter les erreurs de formule, je dois ajouter une autre couche comme ceci :

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

Cependant, surtout lorsque [formula x] est très longue, cela peut aboutir à une formule finale qui semble beaucoup plus compliquée qu'elle ne l'est et qui devient beaucoup plus difficile à dépanner et à maintenir qu'elle ne devrait l'être.

Voici un exemple horrible...

Formule de base :

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

Ajout d'un blanking conditionnel :

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

Une formule déjà très longue est plus que doublée en taille, juste pour que je puisse afficher un blanc (ou toute autre valeur choisie, d'ailleurs) lorsque cette même formule répond à une condition donnée. Si j'essaie de faire cela sur une ligne entière, en fonction de la formule de départ, je pourrais facilement rencontrer des erreurs de référence circulaire.

Existe-t-il un moyen d'auto-référencer une formule ou un argument existant dans la même cellule, ou peut-être une autre fonction ou fonctionnalité qui peut être utilisée pour obtenir ce résultat plus proprement ?

Une fonction qui fait ce que je cherche pourrait être comme ceci :

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

L'argument 1 est la formule de base, l'argument 2 est la condition que je souhaite faire correspondre. L'argument 3 est le résultat à afficher si la condition correspond. Si la condition n'est pas remplie, la fonction renvoie le résultat de la formule de base.

3voto

Jim St. Clair Points 31

Avez-vous pensé à évaluer la formule dans une cellule cachée (ou dans une cellule d'une autre feuille de calcul), puis à effectuer votre suppression conditionnelle en fonction de la valeur de la cellule cachée, au lieu de devoir saisir la formule deux fois. Je ne connais pas l'ensemble du contexte dans lequel vous travaillez mais j'ai fait quelque chose de similaire avec un certain succès dans le passé.

3voto

Excellll Points 12428

Vous pourriez recourir à une fonction VBA pour nettoyer la syntaxe de la formule. Par exemple, vous pouvez placer une formule de ce type dans un module (Presse Alt + F11 puis Insertion >> Module) :

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

Donc, pour l'utiliser afin d'appliquer la suppression conditionnelle à

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

Vous utiliseriez

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

Si vous vouliez effacer la cellule si C2 = "omg", vous ajouteriez un troisième argument facultatif :

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

1voto

chris neilsen Points 4226

Vous pouvez utiliser Conditional Formatting pour atteindre votre objectif.

Retirer tous les éléments supplémentaires de la formule, pour ne garder que la formule de base.

Appliquer un Format only cells that contain condition avec vos critères de blnaking

Lorsque la condition "Blanking" est vraie, appliquer un format de Numéro Personnalisé de ;;;

Alternative pour Excel 2007 ou plus récent

IFERROR(value, value_if_error)

Extrait de l'aide d'Excel :

Renvoie une valeur que vous spécifiez si l'évaluation d'une formule donne lieu à une erreur ; sinon, elle renvoie le résultat de la formule. Utilisez la fonction IFERROR pour détecter et traiter les erreurs dans une formule.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X