Afficher vide lors du référencement d'une cellule vide dans Excel 2010

27

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 aux cellules individuelles de deux autres feuilles de calcul du même classeur. J'utilise une référence de cellule directe qui dit essentiellement que la valeur entrée dans une cellule particulière sur 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 qui se remplissent à partir de cette cellule principale afficheront 0, plutôt que de rester elles-mêmes vides.

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

Dave
la source
Ma formule est très longue, pour moi aussi la construction IF est difficilement acceptable, bonne question mais moi aussi je n'ai pas trouvé de réponse assez bonne. {= IFERROR (INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska"); SMALL (KDYŽ ((INDEX (NEPŘÍMÝ.ODKAZ ("EsZkouska") ;; 1; 1) = "ČSN721180") *) (INDEX (NEPŘÍMÝ.ODKAZ (" EsZkouska ") ;; 9; 1) =" RC_P_B "); ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska ")) - MIN (ŘÁDEK (NEPŘÍMÝ.ODKAZ (" EsZkouska "))) + 1;" "); 1) ; 17; 1); "")}
Vojtěch Dohnal
Il est possible d'utiliser la construction IF combinée à cette approche: stackoverflow.com/questions/22359452/… . Vous pouvez ainsi créer des formules nommées et les utiliser dans votre simple instruction IF ...
Vojtěch Dohnal

Réponses:

49

Vous devez forcer 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 référence de cellule une valeur de texte, empêchant ainsi la conversion des blancs en zéros.

wbeard52
la source
4
Hou la la! Je ne peux pas croire que cela se soit avéré si simple!
Scott
1
Comment la solution gère-t-elle le formatage de la saisie numérique? Il me semble que cette réponse détruit les données numériques. Bien sûr - vous n'obtenez pas le 0 lorsque la cellule est vide, mais vous obtenez également des données textuelles au lieu de numériques ... Est-ce un problème dans la pratique ou avez-vous des mots rassurants?
LudvigH
1
Il le stocke sous forme de texte. Cependant, lorsque vous l'utilisez dans une équation mathématique, Excel doit le reconvertir en nombre. En pratique cependant, vous ne déploieriez cette solution que sur un rapport où vous avez déjà effectué le travail en arrière-plan sur d'autres feuilles de calcul ou colonnes cachées.
wbeard52
18

Voici trois réponses:

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

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

2) Définir le format « Nombre » de vos cellules liées à « Custom »: General;–General;.

3) Dans la section «Options Excel», page «Avancé», section «Options d'affichage pour cette feuille de calcul», décochez la case «Afficher un zéro dans les cellules qui ont une valeur zéro». Avertissement: cela entraînera la disparition de tous les zéros de la feuille de calcul.

Scott
la source
1
La première option est sous-optimale, car elle nécessite la saisie (ou la copie) de votre formule deux fois dans la cellule. Cela peut être particulièrement désagréable lorsque vous avez une formule très longue et que vous devez ensuite modifier (ou pire, déboguer) cette formule plus tard. La deuxième option ne semble pas fonctionner pour moi, mais je me trompe peut-être. Le troisième n'est certainement pas idéal, car la portée de son effet est beaucoup plus large que ce que l'on pourrait vraiment souhaiter. N'y a-t-il vraiment pas de meilleures options?
Iszi
@ Iszi: Concernant la première option: je ne parle pas de saisir deux fois une formule . Conformément à la question d'origine, je parle d'une situation où Q1contient une formule (vraiment longue) et A1contient =Q1; nous voulons changer A1à =IF(Q1<>"", Q1, ""), que vous ne devriez jamais avoir besoin de changer à nouveau. «N'y a-t-il vraiment pas de meilleures options?» Eh bien, cette question est inactive depuis neuf mois, et c'est tout ce qui a été publié. Si ces réponses ne vous conviennent pas, postez une nouvelle question ou attribuez une prime à celle-ci.
Scott
C'est plus ou moins la même chose. Bien que cela résout une partie de la lourdeur d'avoir à dépanner deux instances d'une formule dans une cellule, il complique un peu les choses en ajoutant une autre cellule (ou autrement inutile) ou groupe de cellules (au contraire inutile) au mélange. Malheureusement, je suppose qu'il n'y a vraiment pas d' autre réponse "agréable et propre" à cela.
Iszi
J'ai posté une question connexe il y a quelque temps et la seule réponse valable différente de ce qui est ici impliqué un script VBA.
Iszi
4

SI vos données de référence ne sont que de type numérique (non textuel) ou vides, et vous pouvez avoir des 0, alors c'est mon approche préférée, avec une seule entrée de formule. Certes, une manière un peu indirecte, mais c'est mieux je pense car:

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

Chute : Si vous avez besoin de données texte renvoyées, cela ne fonctionnera pas. Pour les données texte, ma méthode préférée utilise le format numérique comme mentionné dans les autres réponses ci-dessus.

=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 la façon dont cela fonctionne:
IFERROR () - le deuxième argument est défini sur une chaîne vide, donc si une erreur se produit, 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 : Stringify la valeur source, puis multipliez par 1. Literal emtpy string * 1 = #VALUE, String with numeric est automatiquement converti en numérique et aucune erreur ne se produit.

rayzinnz
la source
Intéressant. Pourquoi pensez-vous avoir besoin "" & A1 & ""? Quand cela produit-il des résultats différents de A1 & ""ou "" & A1?
G-Man dit `` Réintègre Monica '' le
@ G-man: correct et préférable. Merci j'ai mis à jour la réponse.
rayzinnz
4

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

Aleksey F.
la source
C'est la solution parfaite pour moi car les cellules que je référence sont moins nombreuses que celles qui les référencent. Merci!
Kit
2

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

Mais combiné avec l'approche d'ici, cela pourrait être 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 des cellules d'une feuille de données à l'aide de la sélection conditionnelle et les présente sur une autre feuille. Je n'ai aucun contrôle sur le formatage des cellules sur la fiche technique.

Je vais dans Insertion> Nom> Définir et dans le "Noms dans le 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 tout le texte de la formule:

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

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

Vojtěch Dohnal
la source
2

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

Firas
la source
5
Cela a le problème évident avec les cellules qui ont une valeur 0 légitime.
Dmitry Grigoryev
Et il a également l'inconvénient de ralentir les calculs, en particulier pour les grandes feuilles de calcul, car les formules de formatage conditionnel sont «super» volatiles. (Ils sont également évalués chaque fois que l'écran est repeint.)
robinCTS
1

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

=IF(ISTEXT(Sheet1!A2), Sheet1!A2, "")
Brad Patton
la source
1
Mais si la cellule référencée ( Sheet1!A2, dans votre exemple) contient un nombre, cela affichera une chaîne nulle.
Scott
Oui, la question de savoir quelles données se trouvent dans la cellule référencée n'était pas claire. J'ai pensé que si c'était numérique, il voudrait les zéros.
Brad Patton
1

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

J'utilise la formule = if (a2 = "", "", a2) depuis des années, mais je trouve que c'est un peu lourd.

J'ai essayé ci-dessus suggestion = a2 & "" et bien que cela semble fonctionner, il affiche un nombre qui est en fait du texte, donc la mise en forme des nombres ne peut pas être appliquée et aucune opération statistique ne fonctionne, comme la somme, la moyenne, la médiane, etc., donc si c'est réalisable 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. Poursuivant l'exemple ci-dessus:

= CELLULE ("contenu", A2)

renvoie une valeur numérique qui peut être formatée sous forme de nombre et renvoie un blanc lorsque la cellule référencée est vide. Pour une raison quelconque, cette solution ne semble apparaître dans aucune des suggestions en ligne que j'ai trouvées, mais elle

Schaetzer
la source
1
Je viens d'essayer cela dans Excel 2013. Lorsque A2est vide, cela s'affiche 0. Êtes-vous sûr de ne rien faire avec la mise en forme?
Scott
1

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 nulle pour les cellules qui ont une valeur nulle".
CBMISRA
la source
Je l'ai dit dans (la troisième option de)  ma réponse .
Scott
0
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
Ramon Salazar
la source
0

J'ai utilisé une mise en forme conditionnelle pour formater la police pour qu'elle soit de la même couleur que l'arrière-plan de la cellule où la valeur de la cellule était égale à zéro.

Butonique
la source
À quoi et à quoi cela ressemblait-il?
Pimp Juice IT
Cette solution a déjà été publiée par Firas il y a 3 ans !
robinCTS
-1

Ce qui a fonctionné pour moi dans Office 2013 était:

=IF(A2=""," ",A2)

Là où sur le premier ensemble de citations il n'y a pas d'espace, et sur le deuxième ensemble il y a un espace.

J'espère que cela t'aides

Andy
la source
Pourquoi avez-vous besoin de l'espace dans le deuxième jeu de parenthèses? Ça ne =IF(A2="", "", A2)marche pas aussi bien? En quoi cela serait-il différent =IF(A2<>"", A2, "")? En quoi est- ce différent de la réponse la plus votée, qui a été donnée il y a plus de deux ans?
G-Man dit `` Réintègre Monica ''
-1

J'ai eu un problème similaire et je pense avoir trouvé une méthode pour vous. Cela a résolu mes problèmes.

Si vous souhaitez que la colonne C fasse référence à la colonne A et écrivez uniquement une formule pour la cellule de référence, utilisez-la et faites glisser la colonne vers le bas.

=A1

Cependant, il peut y avoir des cellules source dans la colonne A qui sont vides et doivent rester vides dans les cellules de référence dans la colonne C, vous pouvez l'utiliser et faire glisser la colonne vers le bas.

=T(A1)

En ce qui concerne le formatage des cellules, la référence (colonne C) devra être générale.

Will Prater
la source
Hélas, c'était une question de conduite - l'OP est venu à Super User (il y a presque trois ans), a posé cette question et n'est jamais revenu. Donc, nous ne connaîtrons peut-être jamais les détails de sa situation. Mais, une fonction majeure (sinon la principale ) d'Excel est de croquer les nombres. Si les données source (colonne A, dans votre exemple) contiennent des nombres, votre réponse ne remplit pas les cellules cibles avec les données numériques.
Scott
Assurez-vous que le formatage de votre cellule dans les cellules contenant la formule = T () est Général plutôt que Texte. Parce que là où je l'ai utilisé, il montre totalement des chiffres.
Will Prater du
J'ai vérifié. C'est général, et ça vient en blanc. (Excel 2013)
Scott
Le problème pourrait être que vous utilisez 2013, ma réponse que j'aurais pour 2010.
Will Prater
Il y avait une réponse (maintenant supprimée; vous ne pouvez la voir que si votre représentant est ≥10000) qui a signalé que cela ne fonctionnait pas non plus dans Excel 2010.
Scott
-1

Solution:
=IF('Wk1 Data-replace w dt bgn & end'!C2>0, 'Wk1 Data-replace w dt bgn & end'!C2, "")

Explication:
Pour résoudre ce problème, j'ai utilisé deux ensembles de Ifcommandes.

Première partie de la commande:
j'ai dit à la cellule d'afficher le contenu de la cellule de référence si la cellule de référence contenait des données (Excel interprète cela comme la cellule ayant une valeur supérieure à 0)

Deuxième partie de la commande:
je lui ai expliqué comment se comporter en l'absence de données; "" signifie laisser vide

Remarque: Wk1 Data-replace w dt bgn & end '! C2 est ma cellule de référence.

Crystal Harris
la source
(1) Ceci s'affichera vide même si la cellule référencée contient 0 ou un nombre négatif. La question veut que la cellule de liaison soit vide uniquement si la cellule référencée est vide . (2) Si vous apportez le changement évident et que vous le changez en =IF('Wk1 … bgn & end'!C2<>"", 'Wk1 … bgn & end'!C2, ""), cela devient équivalent à une réponse qui a déjà été donnée environ quatre fois.
G-Man dit `` Réintègre Monica ''
-1

Toutes ces solutions sont beaucoup trop compliquées pour moi et je me rends compte que cela peut ne pas être possible pour toutes les applications, mais je remplis simplement le champ source avec un blanc et j'obtiens un blanc dans le champ de destination.

John Alonso
la source
1
Comment remplissez-vous une cellule avec un blanc, et qu'entendez-vous par un blanc?
fixer1234
Excusez-moi, j'aurais dû dire un caractère spatial. De cette façon, sa cellule n'est pas réellement vide. La cellule source contient un espace et l'espace arrive dans la cellule de destination copiée.
John Alonso
-1

J'ai une solution qui fonctionne pour moi:

IF(cell reference="","",cell reference)

Explication:

""est égal à une cellule vide ou vide. Maintenant, je ne fais que tourner le si. Si la cellule est vide, rendez-la vide, sinon utilisez la référence de cellule.

Sebastian Tidare
la source
C'est fondamentalement la même que la première solution dans superuser.com/a/515941
Arjan
-2

Allez dans Formater les cellules.

Sélectionnez ensuite un format personnalisé et entrez les informations suivantes: 0;-0;;@

Avik
la source
2
Pouvez-vous expliquer ce que cela fait? Merci.
fixer1234
1
Cela fait à peu près la même chose que la deuxième option de ma réponse à cette question («Définissez le format« Nombre »de vos cellules liées sur« Personnalisé »: General;–General;.») - à savoir (a) si la valeur est un nombre positif, afficher sa valeur absolue entière; (b) si la valeur est un nombre négatif, afficher sa valeur absolue entière, précédée de -; (c) si la valeur est nulle, n'afficher rien ; et (d) si la valeur n'est pas un nombre, afficher sa valeur textuelle. … (Suite)
Scott
1
(Suite)… Cependant, cette version présente l'inconvénient (c.-à-d. Erreur) qu'elle arrondit les nombres non entiers à l'entier le plus proche. ( Generalvous donne le format par défaut pour les nombres, y compris les chiffres décimaux si nécessaire (mais sans inclure le -signe).) De plus, la finale ;@semble inutile (c'est-à-dire qu'elle semble être la valeur par défaut), dans la mesure où ma réponse affiche correctement les valeurs de texte sans modification.
Scott