Excel多个动态图

时间:2015-04-18 09:52:22

标签: excel excel-vba excel-formula vba

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

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

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

E.g:

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

1 个答案:

答案 0 :(得分:0)

这是可行的。动态创建图表是您应该放在库中以供将来参考的例程之一。我已经这样做了,代码如下。代码将基于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