【问题标题】:Excel multiple dynamic graphsExcel多个动态图
【发布时间】:2015-04-19 00:49:47
【问题描述】:

我有一系列数据,我想将它们绘制成几张图表。数据按日期排序,并根据先验条件提取在其旁边标有 TRUE 条件的数据。

由于数据集很大,是否可以自动生成一系列图表?我知道如何使用记录宏功能创建宏,只是我不确定如何过滤数据以制作图表。

在下面的示例数据中,我将有 2 个图表,日期范围为 1 月 1 日至 3 日,另一个图表为 1 月 6 日至 7 日。

例如:

T/F   Date    Data
True  1-Jan   0.1
True  2-Jan   0.2
True  3-Jan   0.4
False 4-Jan   0.2
False 5-Jan   0.1
True  6-Jan   0.3
True  7-Jan   0.4

【问题讨论】:

  • 答案的图表部分如下。当它从True 切换到False 时,您应该能够遍历T/F 列并制作一个新图表。这将需要一点逻辑,但它是通过 Ranges 工作的相当简单的代码。试一试,如果您在其中的某个特定部分有不足,请告诉我们。

标签: excel excel-formula vba


【解决方案1】:

这是可行的。动态创建图表是您应该存放在库中以供将来参考的例程之一。我已经这样做了,代码如下。该代码将根据 x/y 范围和位置创建图表。该位置允许图表在创建时排列在网格中。您将不得不争论您的范围,以便您可以在它需要的输入下方提供子。这应该只是迭代和跟踪要创建的图表的问题。

唯一的关键步骤是使用ChartObjects.Add 创建一个新图表(带有定位数据),然后使用SeriesCollection.NewSeries 向图表添加一个系列。

您可以多次调用此代码,location 递增以创建您想要的图表并将它们放入网格中。

Sub CreateChartFromRange(xval As Range, yval As Range, location As Integer)

    Dim height As Double, width As Double
    height = 300
    width = 300

    Dim columns As Integer
    columns = 3

    'assume active sheet
    Dim cht_obj As ChartObject
    Set cht_obj = ActiveSheet.ChartObjects.Add( _
        (location Mod columns) * width, _
        (location \ columns) * height, _
        width, _
        height)

    Dim ser As Series
    Set ser = cht_obj.Chart.SeriesCollection.NewSeries

    ser.Values = yval
    ser.XValues = xval

    'assume XY scatter type
    ser.ChartType = xlXYScatter

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 2021-09-13
    • 1970-01-01
    • 2020-01-03
    • 2018-07-07
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多