【问题标题】:getting the values from the activechart using excel vba使用 excel vba 从活动图表中获取值
【发布时间】:2014-03-31 02:59:17
【问题描述】:

我有一些数据,我已将其绘制为散点图。我想遍历图表上的点,并以编程方式使用 VBA 确定它们的

  1. 集群
  2. 预算
  3. 实际
  4. 方差值

我知道我可以使用以下代码获得 (4) 方差,但我不确定如何获得值 1:集群、2:预算、3:实际

Sub t3()
    Dim chart As chart
    Dim series As series
    Dim values As Long
    Dim p As Double

    Set chart = ActiveChart

    Set series = chart.SeriesCollection(1)

    p = series.Points.Count

    For i = 1 To p
        values = series.values(i)
        Debug.Print " ", i, values,
        Debug.Print ""
    Next i
End Sub

使用 1、2、3、4 的这些信息,我将检查集群,并相应地为点着色 A:蓝色、B、红色、C 绿色

然后我需要在图表左侧放置一个图例,其中包含 3 个聚类值及其颜色:A:蓝色、B、红色、C 绿色

图表

我想要什么

I 图表,按簇着色:A、B 或 C,其中 A、B、C 中的每一个在图例中只出现一次。然而,集群却出现在每个点上:(

获取其他值

  1. 我想对散点图上的每个点进行计算,但是我不确定如何访问其他值(预算值和实际值),因为我只在我的立即绘制图表。

  2. 我只是从起始位置偏移并将值存储在变量中,但我觉得必须有更好的方法来访问工作表中的其他数据以在图表中使用?而不是从数据中删除它(当您为图表选择数据>>时,您可以隐藏它然后在计算中使用它吗?

【问题讨论】:

  • 您能否展示您的图表,因为很难想象您是如何设置图表的?如果您只是为每列使用不同的系列,您可以选择不同的系列并遍历它:chart.SeriesCollection(2)、chart.SeriesCollection(3) 等等...
  • 如何将缺少的列(预算和实际)作为系列添加到图表上,然后隐藏它们(不显示)。如果我能做到这一点,是的,我同意你可以对表中的所有值使用一个迭代器 (i)。但我不确定如何将缺失的列添加到图表中并隐藏它们的任何方面,使其不显示在图表的任何位置。
  • 如果它们不在图表中,您将无法访问它们。可以通过将线条和填充可见性设置为 msoFalse 来隐藏图表上的系列。如果这样做,您可能需要设置轴的最大值和最小值。 TBH 在您的情况下访问电子表格中的数据可能是一种更好的方法。
  • 您好,Mitja,谢谢。我很感兴趣,为什么您认为从电子表格访问是一个更好的选择? vs 制作系列,并让它们成为虚假?
  • 不确定您有多少积分,但如果通过电子表格访问,性能会好得多。此外,您还会遇到轴问题,因为它会延伸到隐藏的系列(想象正预算以及实际和负方差 - 即使所有显示的数据都是负数,图表仍然会有很多空间被正数占用)。您必须将轴设置为固定,如果您的数据是动态的,那么这不是很好 - 您必须在每次数据更改时更改固定轴。

标签: excel vba loops charts


【解决方案1】:

要让图表仅显示每个集群 ID 一次,请使用此方法。我在数据范围中添加了三列,每列以每个集群 ID 为首。选择E2:G7,输入这个公式

=IF(E$1=$A2,$D2,NA())

然后按 Ctrl+Enter 用公式填充所选范围。

选择阴影范围(选择一个区域,然后在选择另一个区域时按住 CTRL)并插入散点图。

每个集群在图表中都有一个唯一的图例条目和不同的格式。

对于其他计算,请使用工作表中的公式。

我不知道你为什么要使用 VBA 来计算你的生活,而你需要的东西直接内置到 Excel 中。

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多