web-dev-qa-db-fra.com

Création d'un graphique dans Excel qui ignore # N/A ou les cellules vides

Je tente de créer un graphique avec une série de données dynamiques. Chaque série du graphique provient d'une plage absolue, mais seule une certaine quantité de cette plage peut contenir des données, le reste étant constitué de #N/A.

Le problème est que le graphique colle toutes les cellules #N/A en tant que valeurs au lieu de les ignorer. J’ai corrigé le problème en utilisant des plages dynamiques nommées (Insertion> Nom> Définir), mais c’est extrêmement inefficace, car chaque graphique a 4 séries dynamiques et je dois en créer 25.

Existe-t-il d'autres solutions qui me permettent de spécifier une plage, comme d'habitude, pour une série de données, mais indiquent au graphique d'ignorer tous les "# N/A" ou les cellules vides?

31
James Skidmore

J'avais le même problème en utilisant une instruction IF pour renvoyer une valeur non désirée à "", et le graphique ferait ce que vous avez décrit. 

Cependant, lorsque j'ai utilisé #N/A au lieu de "" (il est important de noter qu'il ne contient pas de guillemets comme dans #N/A et non pas "#N/A"), le graphique a ignoré les données non valides. J'ai même essayé de mettre dans une instruction FALSE invalide et cela a fonctionné de la même manière, la seule différence était que #NAME? était renvoyé sous forme d'erreur dans la cellule au lieu de #N/A. Je vais utiliser une déclaration IF préparée pour vous montrer ce que je veux dire:

=IF(A1>A2,A3,"")  
---> Returned "" into cell when statement is FALSE and plotted on chart 
     (this is unwanted as you described)

=IF(A1>A2,A3,"#N/A")  
---> Returned #N/A as text when statement is FALSE and plotted on chart 
     (this is also unwanted as you described)

=IF(A1>A2,A3,#N/A)  
---> Returned #N/A as Error when statement is FALSE and does not plot on chart (Ideal)

=IF(A1>A2,A3,a)  
---> Returned #NAME? as Error when statement is FALSE and does not plot on chart 
    (Ideal, and this is because any letter without quotations is not a valid statement)
24
Mike Rhodes

Lorsque vous faites référence au graphique dans une plage définie, tous les points de cette plage sont représentés graphiquement, en interprétant (pour des raisons de traçage) les erreurs et les blancs en tant que valeurs NULL. 

Chart with #N/A values as null

Vous avez la possibilité de laisser la valeur nulle (gap) ou de la forcer à zéro. Mais aucun de ceux-ci ne redimensionne la GAMME indiquée par les données de la série de graphiques. D'après ce que je comprends, ni l'un ni l'autre ne conviennent.

Chart hidden/empty cell options

Si vous masquez toute la ligne/colonne contenant les données # N/A, le graphique doit les ignorer complètement. Vous pouvez le faire manuellement en faisant un clic droit | masquer la ligne, ou en utilisant le filtre automatique de table. Je pense que c'est ce que vous voulez accomplir. 

Chart with hidden source data rows ignores hidden data

19
David Zemens

Veuillez noter que lorsque vous tracez un graphique en courbes, utilisez = NA () (sortie # N/A) pour éviter de tracer des valeurs non existantes ne fonctionnera que pour les extrémités de chaque série, première et dernière valeurs. Tout # N/A entre deux autres valeurs sera ignoré et ponté.

Example Plot Here

10
sebastian

Vous avez raison, les espaces "" ou une chaîne "# N/A" sont en effet interprétés comme ayant des valeurs dans Excel. Vous devez utiliser une fonction NA ().

4
Tom B

Si vous souhaitez disperser le diagramme dans les colonnes x et y, mais que toutes les cellules de l'une des colonnes ne sont pas renseignées avec des valeurs significatives (certaines d'entre elles ont #DIV/0!), insérez une nouvelle colonne à côté de la colonne incriminée et tapez =IFERROR(A2, #N/A), où A2 est la valeur dans la colonne incriminée. 

Ceci renverra #N/A s'il existe un #DIV/0! et renverra la valeur correcte sinon. Créez maintenant votre tracé avec votre nouvelle colonne et Excel ignore la valeur #N/A et ne les trace pas sous forme de zéros. 

Important : ne pas générer "#N/A" dans la formule, mais simplement générer #N/A.

3
geodork

Vous pouvez utiliser la fonction "= IF (ISERROR (A1); 0; A1)". Elle indique zéro si la cellule A1 contient une erreur ou la valeur réelle si ce n’est pas le cas.

2
Nicolaesse

Il existe une autre solution beaucoup moins connue qui a du mérite à certains endroits. Utilisez le #NULL! erreur qui ne parcourt pas et ne crée pas un point zéro pour le tracé.

Donc, votre colonne de tracé est remplie avec la construction suivante. Supposons des données réelles dans la colonne A et que la version tracée est dans la colonne C.

= Si (numéro (A2), A2, A2 A3)

Cet espace est un opérateur peu connu pour produire l'intersection des deux adresses ou plages de cellules. S'il n'y a pas d'intersection, le message #NULL!

Cellules contenant #NULL! sont ignorés à des fins de traçage.

À part (pour Microsoft) juste besoin d'obtenir les équations mathématiques pour ignorer ces cellules en quelque sorte?

1
BobJordanB

je voulais juste mettre mes 2cents à propos de cette question ...

J'avais un besoin similaire en extrayant les données d'une autre table via INDEX/MATCH, et il était difficile de distinguer une valeur réelle de 0 par rapport à une valeur de 0 en raison de l'absence de correspondance (par exemple pour un histogramme montrant la progression de valeurs sur 12 mois et où nous ne sommes qu'en février mais les données pour le reste des mois ne sont pas encore disponibles et le diagramme à colonnes indique toujours des 0 partout pour mars à décembre)

Ce que j’ai fini par faire est de créer une série new et de tracer cette nouvelle série sur le graphique sous forme de graphique line puis de masquer le graphique linéaire en choisissant de ne pas afficher la ligne dans les options. Sur les étiquettes de données en haut, la formule pour les valeurs de cette nouvelle série ressemblait à ceci:

= IF (LEN ([@ [colonne1]]) = 0, NA (), [@ [colonne1]])

J'ai utilisé LEN comme validation parce que ISEMPTY/ISBLANK ne fonctionnait pas, car le résultat de INDEX/MATCH renvoyait toujours autre chose qu'un blanc, même si j'avais mis un "" après l'IFERROR ...

Sur le graphique en courbes, la valeur d'erreur NA () fait en sorte que la valeur ne soit pas affichée ... donc cela a fonctionné pour moi ...

Je suppose que c'est un peu difficile de suivre cette procédure sans images, mais j'espère que cela dépeint une sorte d'image pour vous permettre d'utiliser une solution de contournement si vous avez un cas similaire comme le mien

1

Une solution est que le chart/graph ne montre pas les lignes cachées.

Vous pouvez tester cette fonctionnalité en: 1) faisant un clic droit sur le numéro de ligne 2) cliquez sur cacher.

Pour le faire automatiquement, voici le code simple:

For Each r In worksheet.Range("A1:A200")
   If r.Value = "" Then 
      r.EntireRow.Hidden = True 
   Else: 
      r.EntireRow.Hidden = False
Next
1
Diego87

C’est ce que j’ai trouvé alors que je ne traçais que 3 cellules de chacune des 4 colonnes regroupées. Mon graphique a une cellule fusionnée avec la date qui est mon axe x. Le problème: les BC26-BE27 affichent comme zéro sur ma carte. entrez la description de l'image ici

Je clique sur le filtre sur le côté du graphique et trouve où il montre toutes les colonnes pour lesquelles les points de données sont représentés. J'ai décoché les cases qui n'ont pas de valeurs . entrez la description de l'image ici

Cela a fonctionné pour moi.

1
JJann

J'avais un problème similaire en utilisant un graphique X/Y mais j'avais également besoin de calculer la fonction de corrélation sur les deux ensembles de données. 

=IF(A1>A2,A3,#N/A) permet de tracer le graphique, mais la corrélation de X & Y échoue.

J'ai résolu cela par =IF(A1>A2,A3,FALSE)

FALSE peut alors être removed en utilisant la mise en forme conditionnelle ou d’autres astuces.

0
Miles

Bien que ce soit un ancien message, je l’ai récemment découvert alors que je cherchais une solution au même problème. Bien que les solutions ci-dessus empêchent les graphiques de tracer des données (lorsque les cellules source sont # N/A ou sont vides), cela ne résout pas le problème des étiquettes de données de graphique elles-mêmes affichant toujours une étiquette zéro. 

J'avais cherché et cherché et presque abandonné lorsque je suis tombé sur la solution publiée en ligne @ https://www.extendoffice.com/documents/Excel/2031-Excel-hide-hide-zero-data-labels.html

Cela a fonctionné comme un charme. Ci-joint, une image montrant un exemple de la façon dont les données (étiquettes) affichées avant le graphique n ° 1 et comment elles s'affichent à l'aide de ce graphique de pointe n ° 2.

entrez la description de l'image ici

0
Heather Nygaard

J'ai trouvé un moyen de le faire.

vous pouvez faire un diagramme de dispersion x, y. il ignorera les enregistrements nuls (c'est-à-dire les lignes)

0
thistleknot

Si vous utilisez PowerPivot et graphique croisé dynamique, vous excluez les lignes non existantes.

0
teitifeiti

Si vous faites que l’échelle verticale de votre graphique (en utilisant l’axe de formatage) soit comprise entre 0,0001 (par exemple), une valeur estimée zéro par Excel ne sera pas tracée. Votre axe dans le graphique aura toujours l’air de partir de zéro.

0
scott

Le meilleur moyen est d’utiliser Vide

Dim i as Integer
For i = 1 to 1000
    If CPT_DB.Cells(i, 1) > 100 Then
       CPT_DB.Cells(i, 2) = CPT_DB.Cells(i, 1)
    Else
       CPT_DB.Cells(i, 2) = Empty //**********************
    End If
Next i
0
gadolf

J'ai eu le même problème avec une ligne complète apparaissant.

La fin de mes données avait seulement # N/A.

Lorsque j'ai changé le type de graphique de ligne empilée à ligne , la fin de la ligne a été supprimée du graphique.

Cela ne fonctionnait pas si le # N/A se trouvait au milieu des données, mais seulement dans les données de fin.

0
ChrisM

J'avais le même problème.

Il y a une différence entre un Bar chart et un Stacked Bar chart

Comme il y a une différence entre un Line chart et un Stacked Line chart.

Celui qui est empilé n'ignorera pas les valeurs 0 ou les valeurs vides, mais affichera une valeur cumulative en fonction des autres légendes.

Il vous suffit de cliquer avec le bouton droit sur le graphique, de cliquer sur Change Chart Type et de choisir un graphique non empilé.

0
Dr Yunke

Sélectionnez les étiquettes au-dessus de la barre . Format Data Labels . Au lieu de sélectionner "VALEUR" (désélectionnez) . SELECT Valeur des cellules. Sélectionnez la valeur . Utilisez l'instruction suivante: if (cellvalue = "", "", cellvalue) Où cellvalue est le résultat du calcul dans la cellule.

0
Scott Guess