数字格式摆脱积分,只显示小数

我正在做一个奇特的图表,我想要在条形图上显示计划的百分比,但是当然,因为它是一个百分比,这个数字比原来应该低很多。

我想到了一个可能很酷的黑客行为,我把结果和计划的百分比结合起来,这会使结果高于结果。

这是失败的,虽然是我需要使用自定义数字格式,以便我可以省略小数(积分)之前,然后显示其余的百分比。

所以例如,如果:

a) Plan = 500 b) Results = 600 c) % of Plan = 120% d) Results + (%oFPlan * 0.001) = 600.0120 

我想Excel显示d)为120%,忽略600.0

它应该最终看起来像这样:

在这里输入图像说明

一种方法是通过分配不同范围的数据标签,假设您有这样的图表,并且您希望数据标签分别为120%和150%,而不是600和500。

在这里输入图像说明

现在,在较旧版本的Excel中,图表对话框中有一个选项允许您重新分配数据标签公式 ,但在Excel 2010中不再存在,或者我无法find它(对于大多数情况,我使用VBA喜欢这个)。

而即使这样做,你坚持使用一个或另一个(600或120%,但不是两个)。 要显示两者(基数为600,高于120%),您需要两个系列的数据。

添加一个重复的系列图表:

在这里输入图像说明

select该系列并重叠100%:

在这里输入图像说明

格式化新系列

在这个例子中,我使用“无填充”(或者将序列号设置为“1”,将其放在现有的序列之后;根据图表的其余部分,可能会也可能不会)。 关于“无填充”的系列有一些怪癖,所以我通常更喜欢使它们变成白色,并推到系列索引= 1,以便它们出现在其他系列的“后面”。

在这里输入图像说明

现在select数据标签,然后按如下所示运行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%或其他。

在这里输入图像说明

UPDATE

我离开原来的答案,因为它是非常灵活的,但这也可以使用“堆积列”图表完成。 但是,我还没有尝试过使用更复杂的图表进行testing,并且从内存中使用堆叠列以及数据中的其他图表types或系列可能会遇到一些挑战,这可能不适合您的目的。

build立一个堆积的柱状图,使用一个公式来得到%值的整数表示,例如“120”而不是“1.2”或“120%”。 将该系列格式化为不可见/不填充,并将数据标签的位置调整为内部基本:

在这里输入图像说明

然后通过自定义格式将数字格式应用于单元格: General""\%""

然后确保系列的数据标签是“链接到源”:

在这里输入图像说明

结果如下:

在这里输入图像说明

这会让民间维护你的电子表格变得非常混乱。

作为替代scheme,考虑引入另一行或列,该区域中的单元格具有公式

=Mod(<range>, 1)

其中<range>对应于您想要格式化的单元格。 这将只提取小数部分,您可以格式化为百分比。