Avoir des formules Excel qui renvoient 0, rendre le résultat vide
Récurrent Excel problème que j'ai est des formules telles que INDEX(array,row,column)
qui retourne 0 quand il n'y a pas de résultat, plutôt que de retourner en blanc.
Quelle est la meilleure façon de changer le résultat nul à vide?
Ici, ce sont des approches que j'ai essayé jusqu'à présent:
1) à l'Aide de la division par zéro. Si le rendement de l'INDICE 0, je fais une erreur que je puis filtrer.
=IFERROR(1/1/INDEX(A,B,C),"")
CONTRE: Rend la formule plus salissant et masque les erreurs que vous pourriez voulez voir.
2) à l'Aide de la mise en forme personnalisée
0;-0;;@
CONTRE:
1) ne peuvent s'appliquer simultanément le format de date
2) Il ne fonctionne pas avec une mise en forme conditionnelle quand il s'agit de la vérification pour les cellules vides (il y a encore de la valeur de zéro, c'est juste pas montré)
3) à l'Aide deIF
états
=IF((1/1/INDEX(A,B,C))<>"",(1/1/INDEX(A,B,C)),"")
INCONVÉNIENTS: Sale répétition
Quelqu'un a une autre/de meilleures idées?
source d'informationauteur WoodenKitty
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer votre propre fonctions définies par l'utilisateur dans un module au sein d'Excel tels que (de mémoire, donc peut-être besoin un peu de débogage, et la syntaxe peuvent varier selon les versions d'Excel):
Vous pouvez simplement insérer
=ZeroToBlank (Index (a,b,c))
dans votre cellule.Il y a un bon tutoriel sur ce sujet ici.
Les étapes de base sont:
Tools -> Macro -> Visual Basic Editor
.Insert -> Module
.=ZeroToBlank (<<whatever>>)
où
<<whatever>>
est la valeur que vous souhaitez utiliser vide pour si c'est le zéro.Noter qu'il peut y avoir de légères variations selon la version d'Excel que vous avez. Ma version d'Excel 2002 qui, certes, est assez vieux, mais il ne fait toujours tout ce que je besoin d'elle.
La façon normale serait de l'instruction if, bien que plus simple que votre exemple:
Pas besoin de faire de girations avec la formule, à partir du zéro des valeurs de déclenchement de la fausse condition.
Je ne suis pas sûr qu'il fonctionne avec tout type de données, mais la seule solution que j'ai trouvé pour le moment est de tester si les rendements des indices vide:
La formule
ne fonctionne pas avec le texte
Peut-être la façon la plus simple est d'ajouter la mise en forme du texte de la condition de la formule, avec un
?
modificateur. Donc:(formula to grab values)
devient:text((formula to grab values),"?")
Espère que ça aide.
Si vous êtes prêt à provoquer tous les zéros dans la feuille de calcul à disparaître, aller dans “Options Excel”, “Avancé”, “Afficher les options pour cette feuille de calcul”, et claire “Afficher un zéro dans les cellules qui ont une valeur de zéro” case à cocher. (C'est la navigation pour Excel 2007; YMMV.)
Au sujet de votre réponse (2), vous pouvez sauver un couple de touches du clavier en tapant
0;-0;
- autant que je peux dire, c'est l'équivalent de0;-0;;@
. à l'Inverse, si vous voulez être un peu plus général, vous pouvez utiliser le formatGeneral;-General;
. Non, cela ne veut pas automatiquement gérer les dates, mais, comme Barry, si vous êtes attend une valeur de date, vous pouvez utiliser un format commed-mmm-yyyy;;
.La question est peut-être pourquoi voudriez-vous d'agir différente de la façon dont il le fait maintenant? En dehors de l'écriture de votre propre enveloppant fonction ou une autre fonction en VBA (qui sera probablement la cause de calcul de la réduction de la vitesse dans de gros fichiers) il n'existe pas une solution unique à vos différents problèmes.
Suivi de la formule aurait très probablement pas au cours d'une vierge donc provoquer une erreur que vous capturez avec
IFERROR()
ou d'empêcher parIF(sourcecell<>"";...)
si vous utilisez le dernier des essais pour un zéro est juste la même quantité de travail et de l'encombrement. Vérification pour les cellules vides devient la vérification de 0 apprécié des cellules. (si ce doenst travail pour vous expliquer plus spécifique de ce qu'est le problème).À des fins esthétiques de la mise en forme personnalisée solution serait tout simplement parfait.
Pour les cartes il y a peut être un problème qui pourrait être résolu par l'application de la formule originale en effet.
Il n'y est une réponse très simple à cette malpropre problème, la SUBSTITUTION de la fonction. Dans l'exemple ci-dessus:
Peut être réécrit comme suit:
J'ai pensé à elle, par la concaténation d'un
EMPTY
chaîne.Cela a fonctionné pour moi
La mise en forme conditionnelle (onglet Accueil, de styles, de section) et de les appliquer en surbrillance des cellules de la règle (mettre 0 dans le Format des cellules qui sont égaux à la boîte), mais sélectionnez le format personnalisé puis l'onglet Nombre. Sélectionnez une Catégorie personnalisée et dans la zone type de vente:
0;-0;;@
Semble compliqué mais c'est en fait simple.
Cela donne l'avantage que la cellule semble vide mais 0 est toujours la valeur sous-jacente, de sorte que toutes les formules que vous utilisez contre la cellule de sélection/d'verrez comme étant numérique et permet d'économiser sur beaucoup de déconner avec enchaîné SI consolidés.
Aucun des ci-dessus a fonctionné pour moi aujourd'hui, donc j'ai essayé de mettre le 0 entre guillemets, comme illustré dans l'exemple ci-dessous.
Exemple:
=SI(INDEX(a,b,c)="0","", INDEX(a,b,c))
Simplement ajouter une chaîne vide à la fin. Il force Excel à voir pour ce qu'elle est.
Par exemple:
=IF(INDEX(a,b,c)="0","", INDEX(a,b,c))
a fonctionné pour moi avec des modifications mineures. À l'exclusion de 0 et pas d'espace entre les deux citations:=IF(INDEX(a,b,c)="","", INDEX(a,b,c))