灵活的数据标签格式

时间:2015-02-18 20:37:35

标签: excel vba excel-vba charts labels

我希望在Excel 2010中将自定义数据标签添加到堆积条形图中。每个条形图都会从工作表中的值中拉出一个标签值,该值不一定等于条形图本身的高度。

我正在制作的工作表是一个模板,并具有下拉选项以更改数据的单位。例如:带有1个小数点的$ MM,带有2个小数点的K,带有0个小数点的$等等...我遇到了格式化标签以匹配数据格式选择的问题。我尝试了两种方法:

  1. 使用VBA格式化数据标签。以下部分代码为$ K,带一位小数:

    `With ActiveChart.SeriesCollection(x).Points(y)`
    

    .DataLabel.Text.NumberFormat = "$#,##0.0,"

  2. 不幸的是,这些标签似乎没有看到逗号并且除以一千,所以我无法准确地显示数千或数百万。上述代码中的值1000将显示为$ 1,000.0而不是所需的$ 1.0。

    1. 格式化工作表中的值,然后使用VBA读取它们。基本上,我使用条件格式来正确显示工作表上的值,然后使用.DataLabel.Text = Cells(r,c)
    2. 读取它们

      不幸的是,尽管数据格式正确,但值仍未更改,标签显示时根本没有自定义格式。

      有没有合理的方法来实现我的目标?我希望有一种方法可以(1)在更改数据标签数字格式时使用逗号计数,或者(2)根据格式下拉选项更改工作表中数据的实际值(而不是只是给他们自定义格式,使值保持不变)。

      谢谢你, 兰斯

2 个答案:

答案 0 :(得分:0)

我认为"条件格式"这是你的问题:我在VBA读取条件格式的基础格式时遇到了问题(不可否认,我的问题是颜色,而不是数字格式,但我期待它的原因不工作会是一样的。)

如果您采用第二种方法,即使用图表" 链接到来源"依赖于工作表的格式;选项,然后在下拉选项更改时触发,您可以使用VBA 设置工作表上的格式而不是使用条件格式 - 然后图表将选择您的任何格式&# 39;重新使用。

答案 1 :(得分:0)

请试试这个:

?Format(1000,"$#,##0.0,")
$1.000,0
?Format(1000,"$#,##0,.0")
$1,0
?Format(1234,"$#,##0,.0")
$1,2