Ale*_*sky 5 charts microsoft-excel
我想为每一行添加数据标签,但只添加到右侧的最后一个值。
我知道是否可以删除单个标签。但是当我向我的表中添加新值时,新值将出现一个新标签,这很好,但之前的我必须手动删除。有没有办法让标签自动向右移动?
如果选择整个系列,Excel 会在该系列中的每个点上放置一个标签。
\n\n仅选择您想要添加标签的单个点:单击一次以选择该系列,然后再次单击以选择一个点。现在,当您使用右键菜单或加号图标添加数据标签时,它将仅在您选择的一个点上添加标签。
\n\n对于仅向最后一个点添加标签并且不会在图表中留下一堆“”标签的 VBA 方法,以下是我的教程《Excel 2007 的标签最后一个点》中的一个简单过程。它使用系列名称专门标记活动图表中每个系列的最后一个点。
\n\nSub LastPointLabel()\n Dim mySrs As Series\n Dim iPts As Long\n Dim vYVals As Variant\n Dim vXVals As Variant\n\n If ActiveChart Is Nothing Then\n MsgBox "Select a chart and try again.", vbExclamation\n Else\n Application.ScreenUpdating = False\n For Each mySrs In ActiveChart.SeriesCollection\n With mySrs\n vYVals = .Values\n vXVals = .XValues\n \' clear existing labels\n .HasDataLabels = False\n For iPts = .Points.Count To 1 Step -1\n If Not IsEmpty(vYVals(iPts)) And Not IsError(vYVals(iPts)) _\n And Not IsEmpty(vXVals(iPts)) And Not IsError(vXVals(iPts)) Then\n \' add label\n mySrs.Points(iPts).ApplyDataLabels _\n ShowSeriesName:=True, _\n ShowCategoryName:=False, ShowValue:=False, _\n AutoText:=True, LegendKey:=False\n Exit For\n End If\n Next\n End With\n Next\n \' legend is now unnecessary\n ActiveChart.HasLegend = False\n Application.ScreenUpdating = True\n End If\nEnd Sub\nRun Code Online (Sandbox Code Playgroud)\n\n我写了很多关于这个的文章:
\n\n\n\n此外,我的商业 Excel 图表软件包含此功能的更新版本。
\n在我的另一个答案中,我没有考虑移动最后一点(即添加的数据点)。调整数据以允许单个移动标签并不是什么大问题。
我只展示了一个数据系列,但一旦您掌握了窍门,就可以轻松完成所需的多个数据系列。在下面的数据集中,我有一个“日期”列和两个具有相同标题“值”的列。第一个值列的值一直到日期范围的中间。第二列有一个仅显示最后一个值的公式。这是单元格 C2 中的公式:
=IF(AND(ISNUMBER(B2),LEN(B3)=0),B2,NA())
Run Code Online (Sandbox Code Playgroud)
该公式被复制到该列中。
现在制作所有数据的图表。第一个值系列是蓝色圆圈和线条,第二个值系列只是最后一个蓝点上的橙色圆圈。我为橙色系列添加了标签,而不是蓝色系列。
第二个图表只是显示了它的清理情况:我已经格式化了第二个值系列,因此它不使用标记和线条,并且我删除了图例。
在下一个图表中,我所做的只是添加几个数据点。无需我做任何进一步的努力,标签已移至新的最后一点。