我正在做一个花哨的图表,我想在条形图上方显示计划的百分比,但当然因为它是%,所以数字比它应该低得多。
我想到了一个可能很酷的黑客,我将结果与计划的百分比结合起来,这会使结果高于结果。
虽然失败但我需要使用自定义数字格式,以便我可以省略小数点前的内容(积分),然后将其余部分显示为百分比。
例如,如果:
a) Plan = 500
b) Results = 600
c) % of Plan = 120%
d) Results + (%oFPlan * 0.001) = 600.0120
我希望Excel将d)显示为120%并忽略600.0
它应该看起来像这样:
答案 0 :(得分:1)
执行此操作的一种方法是分配来自不同范围的数据标签,因此,假设您有一个这样的图表,并且您希望数据标签分别为120%和150%,而不是600和500。
现在,在旧版本的Excel中,“图表”对话框中有一个选项允许您重新分配数据标签公式,但它在Excel 2010中不再存在,或者我无法找到它(我在大多数情况下使用VBA)。
即使这样做,你仍然坚持使用其中一种(600或120%,但不是两者)。要显示两者(600以上,120%以上),您需要两个系列的数据。
在图表中添加重复的系列:
选择该系列并执行重叠100%:
格式化新系列
对于这个例子,我使用" No Fill" (或将系列顺序设置为" 1"将置于现有系列之后;取决于图表的其余部分,可能会也可能不会)。有一些关于" No Fill"系列的怪癖。所以我通常喜欢把它们变成白色并推进系列指数= 1,这样它们就会出现在"背后"其他系列。
立即选择数据标签,然后按如下方式运行VBA程序。
请注意,上述某些步骤可以介绍给VBA,但实现方式在很大程度上取决于您的图表和图表。工作表结构。
Sub Data_Labels()
'Data_Labels Macro
Dim ws As Worksheet
Dim cht As Chart
Dim srs As Series
Dim dl As DataLabels
Dim rng As Range
Dim pt As Point
Dim p As Integer
Set ws = ActiveSheet
'Ensure the user selects some DataLabels
If TypeName(Selection) <> "DataLabels" Then
MsgBox "Please select data labels to overwrite", vbInformation
GoTo EarlyExit
End If
'Get a handle on the chart & data labels objects
Set dl = Selection
Set cht = Selection.Parent.Parent.Parent
'Prompt the user for new labels
Set rng = Application.InputBox( _
"Please select the values to use for the data labels", _
"Overwrite data labels", _
Type:=8)
'Sanity check:
Do While rng.Cells.Count <> dl.Count
Set rng = Application.InputBox( _
"The number of cells in your selection does not match the number of data labels, please try again.", _
"Overwrite data labels", _
rng.Address, _
Type:=8)
Loop
Set srs = dl.Parent
'## Iterate the points in this series
For p = 1 To srs.Points.Count
Set pt = srs.Points(p)
'##Overwrites the text with formula reference to the specified cell
pt.DataLabel.Text = "='" & ws.Name & "'!" & rng.Cells(p).Address(ReferenceStyle:=xlR1C1)
Next
EarlyExit:
End Sub
结果
你应该得到一个类似的图表(你可以删除图例,或每个系列的个别LegendEntry):
由于此图表的此系列数据标签现在包含对单元格的公式引用,因此 的单元格可以包含达到120%的公式或不管。
<强>更新强>
我留下原始答案,因为它非常通用,但这也可以使用&#34; Stacked Column&#34;图表。但是,我还没有尝试使用更复杂的图表进行测试,并且从内存中,使用堆积列以及数据中的其他图表类型或系列存在一些挑战,这可能不适用于您的目的。 / p>
使用导致%值的整数表示的公式构建堆积柱形图,例如&#34; 120&#34;而不是&#34; 1.2&#34;或&#34; 120%&#34;。将系列格式设置为不可见/无填充,并将数据标签的位置调整为Inside Base:
然后通过自定义格式将数字格式应用于单元格:General""\%""
然后确保系列&#39;数据标签是&#34;链接到来源&#34;:
结果如下:
答案 1 :(得分:0)
对于维护电子表格的人来说,非常会让人感到困惑。
作为替代方案,请考虑引入另一行或列,其中该区域中的单元格具有公式
=Mod(<range>, 1)
<range>
对应于您想要格式化的单元格。这将只提取小数部分,您可以将其格式化为百分比。