我必须在excel 2016中运行许多条形图,每个条形图都显示该公司在特定国家/地区的季节性表现。我希望在每个栏的顶部看到此格式的%Change [Color10] 0%“▲”; [Red] -0%“▼”。我之所以添加数据标签,是因为我使用了“来自单元格的值”功能来显示%Change而不是所售金额。现在一切就绪,我的百分比很好地放在了条形图的顶部,但是我无法自动为它们上色(正绿色和负红色)。我尝试直接从位于“数字”下的格式窗口中对标签进行格式化,但是我发现当使用“来自单元格的值”派生标签内容时,它根本无法使用。
所以我开始研究VBA,但是由于我对编程一无所知,所以没有成功。我正在寻找一个更改图表数据标签的代码,以使它们保持源字体(在源中,我的%Change值已采用所需的格式([Color10] 0%“▲”; [Red ] -0%“▼”)。谷歌搜索,我发现了不同的解决方案,但没有一个起作用。我将发布对我来说看起来更好的解决方案。
public abstract class BaseNode
{
public IList<BaseNode> Children
{ get; } = new List<BaseNode>();
}
public class NodeClassA : BaseNode { }
public class NodeClassB : BaseNode { }
public class NodeClassC : BaseNode { }
这是唯一实际运行的标签,我的标签全为白色。随着以下我遇到错误。
Sub legend_color()
Dim SRS As Series
With ActiveChart
For Each SRS In .SeriesCollection
SRS.ApplyDataLabels AutoText:=True, LegendKey:= _False,
ShowSeriesName:=False,
ShowCategoryName:=False,
ShowValue:=True, _ ShowPercentage:=False,
ShowBubbleSize:=False
SRS.DataLabels.Font.ColorIndex = SRS.Border.ColorIndex
Next SRS
End With
End Sub
非常感谢您的帮助, 托马索
答案 0 :(得分:0)
如果只是缺少颜色,则可以使用以下格式设置每个标签的格式:
Sub Tester()
Dim s As Series, dl As DataLabels, d As DataLabel
Dim i As Long, rngLabels
Set s = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
Set dl = s.DataLabels
'Option 1: set label color based on label value
For i = 1 To dl.Count
With dl(i)
.Font.Color = IIf(Val(.Text) < 0, vbRed, vbGreen)
End With
Next i
'Option 2: set label color based on label source cell
' Note use of DisplayFormat to pick up custom
' formatting colors
Set rngLabels = Range("C7:C13")'<< source range for data labels
For i = 1 To dl.Count
dl(i).Font.Color = rngLabels(i).DisplayFormat.Font.Color
Next i
End Sub