web-dev-qa-db-fra.com

Afficher un blanc lors de la référence à une cellule vide dans Excel 2010

J'ai un classeur Excel 2010 qui contient un certain nombre de feuilles de calcul individuelles. Les cellules de l'une des feuilles sont liées à des cellules individuelles de deux autres feuilles de calcul du même classeur. J'utilise une référence de cellule directe qui indique essentiellement que toute valeur entrée dans une cellule particulière d'une feuille remplit également les cellules de deux autres feuilles. J'ai utilisé la fonction (=) avec la référence de cellule pour accomplir cela.

Le problème que je rencontre est que, même lorsque la cellule principale est laissée vide, les cellules remplies à partir de cette cellule principale afficheront 0 au lieu de rester vides elles-mêmes.

Je veux que les cellules subordonnées restent vides si la cellule principale à laquelle elles sont liées est vide.

24
Dave

Vous devez obliger Excel à traiter le contenu de la cellule comme une valeur de texte au lieu d'un nombre, ce qu'il fait automatiquement avec des valeurs vides.

=A2 & ""

Cela forcera Excel à faire de cette cellule une référence à une valeur de texte, empêchant ainsi la conversion des espaces en zéros.

45
wbeard52

Voici trois réponses:

1) Si vous laissez other.cell.reference représente la formule de référence que vous avez actuellement après le = (par exemple, Sheet17!$H$42), remplacez cette référence de lien par

=IF( other.cell.reference <>"", other.cell.reference , "")

2) Définissez le format «Nombre» de vos cellules liées sur «Personnalisé»: General;–General;.

3) Dans la section «Options Excel» de la page «Avancée», dans la section «Options d'affichage pour cette feuille de calcul», décochez la case «Afficher le zéro dans les cellules comportant une valeur zéro». Attention: cela fera disparaître tous les zéros de la feuille de calcul.

18
Scott

SI vos données de référence sont uniquement de type numérique (non-texte) ou vides, et que vous pouvez avoir des 0, il s'agit de mon approche préférée, avec une seule saisie de formule. Certes, de façon légèrement indirecte, mais il vaut mieux, à mon avis, que:

  • vous n'avez pas besoin de cellules supplémentaires pour insérer la formule, puis référencer les secondes cellules
  • vous n'avez pas besoin de taper deux fois la formule
  • cette méthode différencie une valeur nulle d'une cellule vide
  • ne nécessite pas de VBA
  • ne nécessite pas de plages nommées

Downfall : Si vous avez besoin de données texte retournées, cela ne fonctionnera pas. Pour les données textuelles, ma méthode préférée consiste à utiliser le format de nombre mentionné dans les réponses précédentes.

=IFERROR((A1 & "") * 1,"")

Dans ce cas, A1 peut être remplacé par n'importe quelle cellule, y compris une autre feuille, un classeur ou INDIRECT ().

Notes sur comment cela fonctionne:
IFERROR () - le deuxième argument est défini sur chaîne vide. Ainsi, en cas d'erreur, nous obtenons une chaîne vide. Nous devons donc nous assurer que si la cellule source est vide, une erreur est déclenchée.

Méthode numérique : Chaîne la valeur source, puis multiplie par 1. Littérale chaîne vide * 1 = #VALUE, la chaîne numérique est convertie automatiquement en numérique et aucune erreur ne se produit.

4
rayzinnz

Il existe une autre astuce: définissez la cellule vide source sur la formule ="". Voir la description détaillée ici.

2
Aleksey F.

Moi aussi, je n'ai pas trouvé de meilleure solution que celle de Scott.

Mais combiné avec l’approche d’ici, il pourrait être presque supportable, je pense:

http://www.ozgrid.com/Excel/named-formulas.htm

Disons que j'ai une formule comme celle-ci

= IFERROR( INDEX(INDIRECT("EsZkouska");
  SMALL(IF((INDEX(INDIRECT("EsZkouska");;1‌​;1)="ČSN721180")*(INDEX(INDIRECT("EsZkouska");;9;1)="RC_P_B");
  ROW(INDIRECT"EsZkouska"))-MIN(ROW(INDIRECT("EsZkouska")))+1;"");1);17;1);"")

Cette formule lit la valeur d'une cellule dans une feuille de données à l'aide de la sélection conditionnelle et la présente sur une autre feuille. Je n'ai aucun contrôle sur la mise en forme des cellules sur la fiche technique.

Je vais dans Insertion> Nom> Définir et dans le "Noms du classeur", je crée un nouveau nom "RC_P_B". Ensuite, dans le champ "Fait référence à", je copie ma formule (sans {} caractères - c'est une formule matricielle).

Ensuite, vous pouvez utiliser la formule de Scott sans avoir à répéter le texte entier:

 {=IF(RC_P_B<>""; RC_P_B;"---")}

Je crois que c'est mieux que de copier la formule entière.

2
Vojtěch Dohnal

Je simple n'utilise pas une formule pour surmonter ce problème. Tout ce que je fais est de formater conditionnellement les cellules avec la couleur de police blanche si la valeur de la cellule est égale à 0.

2
Firas

Solution pour Excel 2010:

  1. Fichier ouvert"
  2. Appuyez sur "Options"
  3. Cliquez sur "Avancé"
  4. Sous "Options d'affichage" pour cette feuille de calcul "BBBB"
  5. Décochez la case "Afficher une valeur zéro pour les cellules qui ont une valeur zéro".
1
C.B.MISRA

Si la cellule liée est non numérique, vous pouvez utiliser une instruction IF avec ISTEXT:

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")
1
Brad Patton

J'ai longtemps cherché une solution élégante à ce problème.

J'ai utilisé formula = if (a2 = "", "", a2) pendant des années, mais je trouve cela un peu lourd.

J'ai essayé ci-dessus suggestion = a2 & "" et bien qu'il semble fonctionner, il indique un nombre qui est en fait un texte; le formatage des nombres ne peut donc pas être appliqué et aucune opération statistique ne fonctionne, telle que la somme, la moyenne, la médiane, etc. Les chiffres que vous recherchez ne correspondent pas à la facture.

J'ai expérimenté certaines des autres fonctions et trouvé ce que je pense être la solution la plus élégante à ce jour. En continuant l'exemple ci-dessus:

= CELLULE ("contenu", A2)

renvoie une valeur numérique pouvant être formatée en tant que nombre et renvoie un blanc lorsque la cellule référencée est vide. Pour une raison quelconque, cette solution ne semble pas figurer dans les suggestions en ligne que j'ai trouvées, mais

1
Schaetzer
Public Function FuncDisplayStringNoValue(MyCell As Variant) As String

Dim Result As Variant

If IsEmpty(MyCell) Then

   FuncDisplayStringNoValue = "No Value"

Else
   Result = CDec(MyCell)

   Result = Round(Result, 2)

   FuncDisplayStringNoValue = "" & Result

   End If

End Function
0
Ramon Salazar

J'ai utilisé la mise en forme conditionnelle pour que la police soit de la même couleur que l'arrière-plan de la cellule, la valeur de la cellule étant égale à zéro.

0
Butonic