Ajout de l'étiquette de données uniquement à la dernière valeur
1
J'ai donc un graphique en courbes à plusieurs lignes. Comme ça.
Je voudrais ajouter une étiquette de données à chaque ligne, mais seulement à la dernière valeur à droite.
Je sais si je peux supprimer des étiquettes individuelles. Mais lorsque j'ajoute une nouvelle valeur à ma table, la nouvelle valeur apparaît avec une nouvelle étiquette, ce qui est bien, mais la précédente devra être supprimée manuellement.
Existe-t-il un moyen de déplacer automatiquement l'étiquette vers la droite?
Dans mon autre réponse, je ne tenais pas compte d’un dernier point en mouvement (c’est-à-dire des points de données ajoutés). Ce n’est pas un gros problème d’ajuster vos données pour permettre une seule étiquette en mouvement.
Je ne montre qu'une série de données, mais il est assez facile d'en faire autant que nécessaire, une fois que vous connaissez le truc. Dans l'ensemble de données ci-dessous, j'ai une colonne Date et deux colonnes avec le même en-tête, Value. La première colonne de valeurs a des valeurs jusqu'au milieu de la plage de dates. La deuxième colonne a une formule qui affiche uniquement la dernière valeur. C'est la formule dans la cellule C2:
=IF(AND(ISNUMBER(B2),LEN(B3)=0),B2,NA())
Cette formule est copiée dans la colonne.
Maintenant, faites un graphique de toutes les données. La première série de valeurs est constituée par les cercles et les lignes bleus, la seconde n'est que le cercle orange situé sur le dernier point bleu. J'ai ajouté une étiquette à la série orange, pas la bleue.
Le deuxième graphique montre simplement que tout est nettoyé: j'ai formaté la deuxième série Value afin qu'elle n'utilise aucun marqueur ni aucune ligne, et j'ai supprimé la légende.
Dans le graphique suivant, tout ce que j'ai fait est d'ajouter quelques points de données. Sans aucun effort supplémentaire de ma part, le label est passé au nouveau dernier point.
Ah, solution intéressante ... Je me demande si je pourrais combiner les deux colonnes, par exemple, convertir toutes les valeurs en chaîne et uniquement la dernière en nombre? J'aurais aussi besoin de comprendre comment les formater à l'identique dans le tableau et cela me limiterait également à certaines formules du tableau.
Alexey Adamsky
Quelles deux colonnes? Et pourquoi convertir en chaînes? Les chaînes seront tracées à zéro (même les chaînes "", qui semblent vides mais ne le sont pas). J'utilise # N / A car ceux-ci ne sont pas complétés du tout.
Jon Peltier
0
Je voudrais vous suggérer les deux options. Le premier est non-VBA et l'autre est le code VBA.
Solution non-VBA:
Comme Excel n’a aucun arrangement pour n’attribuer qu’une seule étiquette de données, des séries de cellules sont impliquées pour créer le graphique.
Mais après la création du graphique, vous pouvez réinitialiser les étiquettes.
Dans votre cas, après l’application de l’étiquette, cliquez avec le bouton droit de la souris sur la ligne pour vérifier si les étiquettes sont prêtes à être modifiées. Sélectionnez les étiquettes une par une, puis faites un clic droit sur & amp; Supprimez ou décochez la case à cocher Valeur en regard de la zone de graphique.
Solution VBA:
Créez un bouton de commande et entrez ce code.
N'oubliez pas que vous créez simplement le graphique mais n'appliquez pas les étiquettes de données. Une fois que tout est prêt, cliquez sur le bouton de commande. Le code créera d’abord toutes les étiquettes de données et conserve le dernier.
Notez que vous pouvez utiliser ce code comme RUN MACRO même sans le bouton de commande.
Sub LastDataLabel()
Dim ws As Worksheet
Dim chrt as Chart
Dim srs as Series
Dim pnt as Point
Dim p as Integer
Set ws = ActiveSheet
Set chrt = ws.ChartObjects("Line Chart")
Set srs = chrt.SeriesCollection(1)
srs.ApplyDataLabels
For p = 1 to srs.Points.Count - 1
Set pnt = srs.Points(p)
p.Datalabel.Text = ""
Next
srs.Points(srs.Points.Count).DataLabel.Format.TextFrame2.TextRange.Font.Size = 10
End Sub
Juste étiqueter le dernier point: srs.Points(srs.Points.Count).ApplyDataLabels. Ensuite, votre tableau n'est pas encombré de toutes ces étiquettes vides.
Jon Peltier
0
Si vous sélectionnez la série entière, Excel apposera une étiquette sur chaque point de la série.
Sélectionnez uniquement le point sur lequel vous souhaitez attribuer une étiquette: cliquez une fois pour sélectionner la série, puis à nouveau pour sélectionner un point. Désormais, lorsque vous utilisez le menu contextuel ou l'icône du signe plus pour ajouter des étiquettes de données, une étiquette ne sera ajoutée qu'au point sélectionné.
Pour une approche VBA qui ajoute seulement une étiquette au dernier point et ne laisse pas de "" étiquettes dans le graphique, voici une procédure simple tirée de mon tutoriel. Étiquette dernier point pour Excel 2007 . Il étiquette spécifiquement le dernier point de chaque série dans le graphique actif avec le nom de la série.
Sub LastPointLabel()
Dim mySrs As Series
Dim iPts As Long
Dim vYVals As Variant
Dim vXVals As Variant
If ActiveChart Is Nothing Then
MsgBox "Select a chart and try again.", vbExclamation
Else
Application.ScreenUpdating = False
For Each mySrs In ActiveChart.SeriesCollection
With mySrs
vYVals = .Values
vXVals = .XValues
' clear existing labels
.HasDataLabels = False
For iPts = .Points.Count To 1 Step -1
If Not IsEmpty(vYVals(iPts)) And Not IsError(vYVals(iPts)) _
And Not IsEmpty(vXVals(iPts)) And Not IsError(vXVals(iPts)) Then
' add label
mySrs.Points(iPts).ApplyDataLabels _
ShowSeriesName:=True, _
ShowCategoryName:=False, ShowValue:=False, _
AutoText:=True, LegendKey:=False
Exit For
End If
Next
End With
Next
' legend is now unnecessary
ActiveChart.HasLegend = False
Application.ScreenUpdating = True
End If
End Sub
Je voudrais vous suggérer les deux options. Le premier est non-VBA et l'autre est le code VBA.
Solution non-VBA:
Comme Excel n’a aucun arrangement pour n’attribuer qu’une seule étiquette de données, des séries de cellules sont impliquées pour créer le graphique.
Mais après la création du graphique, vous pouvez réinitialiser les étiquettes.
Dans votre cas, après l’application de l’étiquette, cliquez avec le bouton droit de la souris sur la ligne pour vérifier si les étiquettes sont prêtes à être modifiées. Sélectionnez les étiquettes une par une, puis faites un clic droit sur & amp; Supprimez ou décochez la case à cocher Valeur en regard de la zone de graphique.
Solution VBA:
Créez un bouton de commande et entrez ce code.
N'oubliez pas que vous créez simplement le graphique mais n'appliquez pas les étiquettes de données. Une fois que tout est prêt, cliquez sur le bouton de commande. Le code créera d’abord toutes les étiquettes de données et conserve le dernier.
Notez que vous pouvez utiliser ce code comme RUN MACRO même sans le bouton de commande.
J'espère que cela vous aidera .
la source
srs.Points(srs.Points.Count).ApplyDataLabels
. Ensuite, votre tableau n'est pas encombré de toutes ces étiquettes vides.Si vous sélectionnez la série entière, Excel apposera une étiquette sur chaque point de la série.
Sélectionnez uniquement le point sur lequel vous souhaitez attribuer une étiquette: cliquez une fois pour sélectionner la série, puis à nouveau pour sélectionner un point. Désormais, lorsque vous utilisez le menu contextuel ou l'icône du signe plus pour ajouter des étiquettes de données, une étiquette ne sera ajoutée qu'au point sélectionné.
Pour une approche VBA qui ajoute seulement une étiquette au dernier point et ne laisse pas de "" étiquettes dans le graphique, voici une procédure simple tirée de mon tutoriel. Étiquette dernier point pour Excel 2007 . Il étiquette spécifiquement le dernier point de chaque série dans le graphique actif avec le nom de la série.
J'ai écrit un tas d'articles à ce sujet:
Label dernier point
Étiquetez chaque série dans un Graphique
Label Last Point for Excel 2007
Label Last Point - Mise à jour Ajouter à
De plus, mon logiciel de création de graphiques Excel commercial inclut une version mise à jour de cette fonctionnalité.
la source