Retourne la cellule vide de la formule dans Excel

J'ai besoin de retourner une cellule vide à partir d'une formule Excel, mais il semble que Excel traite une chaîne vide ou une référence à une cellule vide différemment que d'une véritable cellule vide. Donc, essentiellement, j'ai besoin de quelque chose comme

=IF(some_condition,EMPTY(),some_value)

J'ai essayé de faire des choses telles que

=IF(some_condition,"",some_value)

Et

=IF(some_condition,,some_value)

Et en supposant que B1 est une cellule vide

=IF(some_condition,B1,some_value)

Mais aucune de ces cellules ne semble être de vraies cellules vides, je suppose parce qu'elles sont le résultat d'une formule. Est-il possible de remplir une cellule si et seulement si une condition est remplie et sinon garder les cellules vraiment vide?

EDIT: comme recommandé, j'ai essayé de retourner NA (), mais pour mes besoins cela n'a pas fonctionné non plus. Est-il un moyen de le faire avec VB?

EDIT: je construis une feuille de calcul qui extrait les données d'autres feuilles de calcul formatées selon les exigences très spécifiques d'une application qui importe les données dans une base de données. Je n'ai pas accès à changer l'implémentation de cette application, et elle échoue si le valeur est "" au lieu de réellement vide.

181
demandé sur brettdj 2009-07-13 18:00:14

17 réponses

Vous allez devoir utiliser VBA, alors. Vous parcourrez les cellules de votre plage, testez la condition et supprimez le contenu s'ils correspondent.

Quelque Chose comme:

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next
44
répondu J.T. Grimes 2015-03-31 07:50:06

Excel n'a aucun moyen de le faire.

Le résultat d'une formule dans une cellule dans Excel doit être un nombre, un texte, logique (booléenne) ou d'erreur. Il n'y a pas de type de valeur de cellule de formule "vide" ou "vide".

Une pratique que j'ai vue suivie est D'utiliser NA () et ISNA(), mais cela peut ou non vraiment résoudre votre problème car il y a une grande différence dans la façon dont NA() est traité par d'autres fonctions (SUM(NA()) est #N/A tandis que SUM(A1) est 0 si A1 est vide).

62
répondu Joe Erickson 2009-07-13 15:06:16

Oui, c'est possible.

Il est possible d'avoir une formule annihilante évaluant à trueblank si la condition est remplie. Il passe le test de la formule ISBLANK. Ce truc apparemment impossible que j'ai trouvé dans la collection de FrankensTeam (référence ci-dessous).

Après avoir configuré 3 étapes, vous pourrez utiliser la plage nommée GetTrueBlank, comme vous le souhaitez dans votre réponse:

=IF(A1 = "Hello world", GetTrueBlank, A1)

Étape 1. mettez ce code dans le Module de VBA.

Function Delete_UDF(rng)
    ThisWorkbook.Application.Volatile
    rng.Value = ""
End Function

Deux remarques sur VBA code.

  1. Ne soyez pas induit en erreur par rng.Value="" rage nommée {[4] } sera finalement un trueblank, pas une chaîne vide comme en guillemet double ="".
  2. dans mes tests, la première ligne de code ThisWorkbook.Application.Volatile utilisée à l'origine par le FrankensTeam s'est avérée inutile.

Étape 2. Dans Sheet1 dans A1 cellule ajouter une plage nommée GetTrueBlank avec la formule suivante:

=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")

entrez la description de l'image ici

Étape 3. utilisez une formule auto-annihilante. Mettre dans la cellule, disons B2, la formule suivante:

=IF(A2=0,GetTrueBlank,A2)

entrez la description de l'image ici

La formule ci-dessus dans B2 évaluera à trueblank, si vous tapez 0 dans A2.

, Vous pouvez télécharger un fichier de démonstration ici.

Dans l'exemple ci-dessus et tous les autres exemples de FrankensTeam, l'évaluation de la formule à trueblank entraîne une cellule vide. La vérification du résultat avec la formule ISBLANK aboutit positivement à TRUE. Ce sont des formules de type hara-kiri. La formule disparaît de la cellule lorsque la condition est remplie. Le but est atteint, bien que l'auteur de la question pourrait vouloir que la formule ne disparaisse pas.

Notez que ces exemples peuvent être modifiés pour donner des résultats dans la cellule adjacente, ne pas se tuer.

Je suis tombé sur les exemples d'obtenir un trueblank comme résultat de formule reaveled par le FrankensTeam ici: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell

22
répondu Przemyslaw Remin 2018-07-30 08:39:29

Peut-être que c'est de la triche, mais ça marche!

J'avais aussi besoin d'une table qui est la source d'un graphique, et je ne voulais pas que des cellules vides ou nulles produisent un point sur le graphique. Il est vrai que vous devez définir la propriété graph, sélectionner les données, les cellules cachées et vides pour " afficher les cellules vides comme des lacunes "(cliquez sur le bouton radio). C'est la première étape.

Ensuite, dans les cellules qui peuvent aboutir à un résultat que vous ne voulez pas tracer, mettez la formule dans une instruction IF avec un résultat NA() comme =IF($A8>TODAY(),NA(), *formula to be plotted*)

Cela donne le graphique requis sans points lorsqu'une valeur de cellule non valide se produit. Bien sûr, cela laisse toutes les cellules avec cette valeur invalide à lire #N/A, et c'est désordonné.

Pour nettoyer cela, sélectionnez la cellule qui peut contenir la valeur non valide, puis sélectionnez formatage conditionnel - nouvelle règle. Sélectionnez "Formater uniquement les cellules qui contiennent" et sous la description de la règle, sélectionnez "erreurs" dans la liste déroulante. Ensuite, sous format, sélectionnez police-couleur-Blanc (ou quelle que soit la couleur de votre fond). Cliquez sur les différents boutons pour sortir et vous devriez voir que les cellules avec des données invalides semblent vides (elles contiennent en fait #N/A mais le texte blanc sur un fond blanc semble vide.) Ensuite, le graphique lié n'affiche pas non plus les points de valeur non valides.

14
répondu Gentle Knight 2018-04-10 06:49:17

Voici comment je l'ai fait pour l'ensemble de données que j'utilisais. Cela semble alambiqué et stupide, mais c'était la seule alternative à apprendre à utiliser la solution VB mentionnée ci-dessus.

  1. j'ai fait une "copie" de toutes les données, et collé les données en tant que "valeurs".
  2. Ensuite, j'ai mis en évidence les données collées et j'ai fait un "replace" (Ctrl-H ) les cellules vides avec une lettre, j'ai choisi q car ce n'était nulle part sur ma feuille de données.
  3. Enfin, j'ai fait un autre "remplacer", et remplacé q par rien.

Ce processus en trois étapes a transformé toutes les cellules " vides "en cellules" vides". J'ai essayé de fusionner les étapes 2 et 3 en remplaçant simplement la cellule vide par une cellule vide, mais cela n'a pas fonctionné-j'ai dû remplacer la cellule vide par une sorte de texte réel, puis remplacer ce texte par une cellule vide.

10
répondu jeramy 2011-06-02 06:02:30

Si le but est de pouvoir afficher une cellule vide alors qu'elle a en fait la valeur zéro, alors au lieu d'utiliser une formule qui aboutit à une cellule vide ou vide (puisqu'il n'y a pas de fonction empty()) à la place,

  • Où vous voulez une cellule vide, de retour d'un 0 au lieu de "", PUIS

  • Définissez le format numérique pour les cellules comme ceci, où vous devrez trouver ce que vous voulez pour les nombres positifs et négatifs (les deux premiers éléments séparés par des points-virgules). Dans mon cas, les chiffres que j'avais étaient 0, 1, 2... et je voulais que 0 apparaisse vide. (Je n'ai jamais compris à quoi servait le paramètre text, mais cela semblait nécessaire).

    0;0;"";"text"@
    
8
répondu ET-X 2011-06-02 06:05:19

Utilisez COUNTBLANK(B1)>0 au lieu de ISBLANK(B1) dans votre instruction IF.

, Contrairement à ISBLANK(), COUNTBLANK() considère "" comme vide et renvoie 1.

7
répondu Kevin Vuilleumier 2016-04-07 09:33:30

Essayez d'évaluer la cellule en utilisant LEN. Si elle contient une formule {[0] } retournera 0. S'il contient du texte, il retournera supérieur à 0.

6
répondu Alex 2012-01-22 20:31:53

Wow, un nombre incroyable de personnes ont mal lu la question. Il est facile de rendre une cellule vide. Le problème est que si vous avez besoin que la cellule soit vide, les formules Excel ne peuvent pas renvoyer "aucune valeur" mais ne peuvent renvoyer qu'une valeur. Renvoyer un zéro, un espace ou même "" est une valeur.

Vous devez donc renvoyer une "valeur magique", puis la remplacer par aucune valeur en utilisant search and replace, ou en utilisant un script VBA. Alors que vous pourriez utiliser un espace ou "", mon conseil serait d'utiliser une valeur évidente, par exemple comme "NODATE" ou "NONUMBER" ou "XXXXX" de sorte que vous pouvez facilement voir où il se produit - il est assez difficile de trouver "" dans une feuille de calcul.

5
répondu Laird Popkin 2013-06-24 19:55:56

Autant de réponses qui renvoient une valeur qui semble vide mais qui n'est pas réellement une cellule as vide comme demandé...

Comme demandé, si vous voulez réellement une formule qui renvoie une cellule vide. C'est possible grâce à VBA. Donc, voici le code pour faire exactement cela. Commencez par écrire une formule pour renvoyer l'erreur #N/A où vous voulez les cellules vides. Alors ma solution efface automatiquement toutes les cellules qui contiennent cette erreur #N/A. Bien sûr vous pouvez modifier le code pour automatiquement supprimez le contenu des cellules en fonction de tout ce que vous aimez.

Ouvrez le "Visual Basic viewer" (Alt + F11) Trouvez le classeur d'intérêt dans l'Explorateur de projet et double-cliquez dessus (ou faites un clic droit et sélectionnez Afficher le code). Cela ouvrira la fenêtre "Afficher le code". Sélectionnez "classeur" dans le menu déroulant (Général) et "SheetCalculate" dans le menu déroulant (déclarations).

Collez le code suivant (basé sur la réponse de J. T. Grimes) dans le Workbook_SheetCalculate fonction

    For Each cell In Sh.UsedRange.Cells
        If IsError(cell.Value) Then
            If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
        End If
    Next

Enregistrez votre fichier en tant que classeur activé macro

NB: ce processus est comme un scalpel. Il supprimera tout le contenu de toutes les cellules qui évaluent à l'erreur #N/A alors soyez conscient. Ils iront et vous ne pouvez pas les récupérer sans rentrer dans la formule qu'ils contenaient.

NB2: évidemment, vous devez activer les macros lorsque vous ouvrez le fichier sinon cela ne fonctionnera pas et les erreurs #N/A resteront non supprimées

5
répondu Mr Purple 2014-08-11 23:33:00

Cette réponse ne traite pas entièrement de L'OP, mais il y a eu plusieurs fois que j'ai eu un problème similaire et cherché la réponse.

Si vous pouvez recréer la formule ou les données si nécessaire (et à partir de votre description, il semble que si vous pouvez), puis quand vous êtes prêt à exécuter la partie qui exige que les cellules vides pour être réellement vide, ensuite, vous pouvez sélectionner la région et exécutez la commande suivante vba macro.

Sub clearBlanks()
    Dim r As Range
    For Each r In Selection.Cells
        If Len(r.Text) = 0 Then
            r.Clear
        End If
    Next r
End Sub

Cela effacera du contenu de toute cellule qui affiche actuellement "" ou qui n'a qu'une formule

3
répondu ElderDelp 2016-10-22 19:15:14

J'ai utilisé le travail suivant pour rendre mon excel plus propre:

Lorsque vous faites des calculs, le ""vous donnera une erreur, donc vous voulez le traiter comme un nombre, donc j'ai utilisé une instruction if imbriquée pour renvoyer 0 istead de"", et si le résultat est 0, cette équation retournera

=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))

De cette façon, la feuille excel sera propre...

2
répondu Big Z 2013-09-30 07:17:28

Si vous utilisez des fonctions de recherche comme HLOOKUP et VLOOKUP pour apporter les données dans votre feuille de calcul, placez la fonction entre crochets et la fonction retournera une cellule vide au lieu d'un {0}. Par Exemple,

Cela renverra une valeur nulle si la cellule de recherche est vide:

    =HLOOKUP("Lookup Value",Array,ROW,FALSE)

Cela renverra une cellule vide si la cellule de recherche est vide:

    =(HLOOKUP("Lookup Value",Array,ROW,FALSE))

Je ne sais pas si cela fonctionne avec d'autres fonctions...Je n'ai pas essayé. J'utilise Excel 2007 pour atteindre ce.

Modifier

Pour obtenir un IF(A1="",,) pour revenir comme vrai, il doit y avoir deux recherches dans la même cellule séparées par un &. La solution la plus simple consiste à faire de la deuxième recherche une cellule qui se trouve à la fin de la ligne et sera toujours vide.

1
répondu Matthew Dolman 2011-05-16 20:06:26

Jusqu'à présent, c'est le mieux que j'ai pu trouver.

Il utilise la fonction ISBLANK pour vérifier si la cellule est vraiment vide dans une instruction IF. S'il y a quelque chose dans la cellule, A1 dans cet exemple, même un caractère D'espace, then the cell is not EMPTY et le calcul en résultera. Cela empêchera les erreurs de calcul de s'afficher jusqu'à ce que vous ayez des chiffres avec lesquels travailler.

Si la cellule est EMPTY, la cellule de calcul n'affichera pas les erreurs du calcul.Si la cellule est NOT EMPTY ensuite, les résultats du calcul seront affichés. Cela lancera une erreur si vos données sont mauvaises, le redouté #DIV/0!

=IF(ISBLANK(A1)," ",STDEV(B5:B14))

Modifiez les références de cellule et la formule selon vos besoins.

1
répondu Stevis Geekus 2012-12-29 19:29:20

La réponse est positive-vous ne pouvez pas utiliser la fonction = IF() et laisser la cellule vide. "Semble vide" n'est pas la même chose que vide. Il est dommage que deux guillemets dos à dos ne donnent pas une cellule vide sans effacer la formule.

0
répondu Ken 2011-10-04 15:35:38

Google m'a amené ici avec un problème très similaire, j'ai finalement trouvé une solution qui correspond à mes besoins, cela pourrait aider quelqu'un d'autre aussi...

J'ai utilisé cette formule:

=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")
-1
répondu hamish 2017-02-07 22:48:39

Il semble qu'une réponse simple qui fonctionne a été manquée.

Nommez une cellule vide dans votre feuille de calcul BlankCell.

Renvoie BlankCell dans votre formule, par exemple

=ISBLANK(IFNA(VLOOKUP(A2,SomeTable,2,False),BlankCell))

, Ce sera le retour de TRUE si ISBLANK(VLOOKUP(A2,SomeTable,2,False)) est TRUE.

-1
répondu NetMage 2017-10-12 21:36:04