饼图:格式值和百分比独立

时间:2014-09-11 16:50:12

标签: excel vba excel-vba

我正在尝试使用千位分隔符(点)和两位小数来格式化图表的DataLabel。类似的东西:“1.500; 66,66%”。

录制宏我看到dot为千位分隔符的NumberFormat为:_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-但我无法使用它格式化DataLabel,因为此时百分比将无法正确显示。

ActiveSheet.Shapes.AddChart.Select    
With ActiveChart
Call .SetSourceData(v_range)
.ChartType = xl3DPie
.SeriesCollection(1).Name = p_title
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.Select
End With
With Selection
.NumberFormat = "0.00%"
.ShowPercentage = True
.Separator = "" & Chr(10) & ""
.ShowLegendKey = 0
End With

修改 我想我需要澄清我的问题。我正在使用范围我的数据自动创建此饼图,例如A的计数和B的计数,并且我还显示图表计算的百分比。在数据范围内,只有A,B和相应的计数。现在我可以在下面的图片中看到。

Piechart I have now

我想要的是:

enter image description here

如果没有办法只使用格式化我想我必须'手动'计算百分比并'手动'用它写标签。通过手动我的意思是访问SeriesCollections(1).Points(1).DataLabel.Text = number + "\n" + percentage或类似的东西。

2 个答案:

答案 0 :(得分:1)

因此,解决方案是编辑每个点的标签并自行插入百分比。

ActiveSheet.Shapes.AddChart.Select
With ActiveChart
Call .SetSourceData(v_range)
.ChartType = xl3DPie
.SeriesCollection(1).Name = p_title
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).Points(1).DataLabel.Text = Format(countA, "#,##") & Chr(10) &   Format(countA / (countA + countB), "0.00%")
.SeriesCollection(1).Points(2).DataLabel.Text = Format(countB, "#,##") & Chr(10) & Format(countB / (countA + countB), "0.00%")
End With

答案 1 :(得分:0)

假设您正在使用数据标签选项显示值系列名称/等,那么您很可能只是简单地格式化数据单元格。 / p>

右键单击单元格,应用您需要的任何格式,或者只是将格式应用于宏中单元格的范围,例如:

Range("A1:A10").NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"

注意我的系统区域设置使用,作为千位分隔符,并使用标签中的分隔符。您的语言环境使用.分隔符和;分隔符,然后我认为这应该有效。

enter image description here