[[20180627203153]] 『グラフを自動で作成したい』(ぽぽ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『グラフを自動で作成したい』(ぽぽ)

縦棒グラフを自動で作成したいです。

やりたいことを説明すると、、、

Excelに以下の二つのシートを用意します。
・data
・graph

dataシートには、以下のようにデータを配置します。
1行目:項目番号
2行目:グラフ1に使用する系列1のデータ
3行目:グラフ1に使用する系列2のデータ
4行目:グラフ1に使用する系列3のデータ
5行目:グラフ2に使用する系列1のデータ
6行目:グラフ2に使用する系列2のデータ
7行目:グラフ2に使用する系列3のデータ
以降、グラフ3,4,5,・・・と配置していく。

graphシートでは、dataシートを参照してグラフ1,2,3・・・と作成します。

現状、グラフのデータ選択をdataシートから手動で選択しているのですが、グラフの数が多いため、オートフィルのようにうまく作成する方法はないのか知りたいです。

以上、よろしくお願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


>Excelに以下の二つのシートを用意します。
>・data
>・graph

残りは、マクロでコピーして作成します

 Option Explicit

 Sub test()
    Dim cht As Chart
    Dim tbl As Range
    Dim i As Long

    Set cht = Charts(1)
    Set tbl = Worksheets(1).Cells(1).CurrentRegion

    For i = 5 To tbl.Rows.Count Step 3
        cht.Copy after:=Charts(Charts.Count)
        With ActiveChart
            .SeriesCollection(1).Values = tbl.Rows(i)
            .SeriesCollection(2).Values = tbl.Rows(i + 1)
            .SeriesCollection(3).Values = tbl.Rows(i + 2)
        End With
    Next

 End Sub

(マナ) 2018/06/27(水) 21:44


マナさん

情報ありがとうございます。
本日、実行してみます。
(ぽぽ) 2018/06/28(木) 07:53


マナさん

本日無事目的を達成することができました。
ありがとうございました。

自分の作成したグラフが埋め込みグラフとなっていて、グラフの移動をしてからでないと期待通りの動作をしないことが分かり、勉強になりました。

このマクロを実行すると、シートが作成するグラフの数量分作成されてしまうので、
次は、graphシート内に連続で作成できるようにしてみたいと思います。

大変助かりました。
ありがとうございました。
(ぽぽ) 2018/06/28(木) 21:48


埋め込みグラフの場合は

 Option Explicit

 Sub test2()
    Dim tbl As Range
    Dim cho As ChartObject
    Dim L As Double, T As Double, H As Double
    Dim i As Long
    Dim n As Long

    Set tbl = Worksheets("data").Cells(1).CurrentRegion
    Set cho = Worksheets("graph").ChartObjects(1)
    L = cho.Left
    T = cho.Top
    H = cho.Height

    For i = 5 To tbl.Rows.Count Step 3
        n = n + 1
        With cho.Duplicate
            .Left = L
            .Top = T + (H + 50) * n
            With .Chart
                .SeriesCollection(1).Values = tbl.Rows(i)
                .SeriesCollection(2).Values = tbl.Rows(i + 1)
                .SeriesCollection(3).Values = tbl.Rows(i + 2)
            End With
        End With
    Next

 End Sub

(マナ) 2018/06/28(木) 22:47


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.