Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11187 / 13646 ツリー ←次へ | 前へ→

【17567】複数グラフシート作成について とみー 04/9/2(木) 14:21 質問[未読]
【17579】Re:複数グラフシート作成について phoo 04/9/2(木) 16:54 回答[未読]
【17600】Re:複数グラフシート作成について とみー 04/9/3(金) 9:28 お礼[未読]

【17567】複数グラフシート作成について
質問  とみー  - 04/9/2(木) 14:21 -

引用なし
パスワード
   はじめまして。
エクセルVBA初心者です。
グラフ作成について質問がございます。

以下のような表があるとします。
(DBからの検索結果をCSVにしており、行・列の数とも検索条件により数が増減します。)

 | 1月 2月 3月 4月 …
----------------------
A | 10  8  6  7 …
B | 7  6  8  5 …
C | 4  3  4  2 …
D | 0  2  1  1 …
: | :  :  :  :

この表を以下のような条件でグラフ化したいと思っているのですが、
方法がわかりませんでした。
(※各条件は同時に満たすわけではありません)

1:行数によって別のグラフシートにする
  例)1グラフシートには10件までという条件で、A〜Zまであった場合
    A〜J、K〜T、U〜Zの3つのグラフシートができる

2:列数によって別のグラフシートにする
  例)1グラフシートには5件までという条件で、1月〜12月まであった場合
    1月〜5月、6月〜10月、11月〜12月の3つのグラフシートができる

よろしくお願いいたします。

【17579】Re:複数グラフシート作成について
回答  phoo  - 04/9/2(木) 16:54 -

引用なし
パスワード
   >この表を以下のような条件でグラフ化したいと思っているのですが、
>方法がわかりませんでした。

マクロ化する でよろしいでしょうか?

(例)
 1月 2月 3月 4月 5月
A 21  5 11 17  6
B 3 14 45  0  5
C 4  5  4  5 15
D 3  9  7  4  3
E 5 45  9 14 18
F 4  4 10  3 21
G 1  5  4  6 20
H 21  2 45  5  2

Z

行は、1月から5月まで
列は、AからZまでと仮定して、
10列単位にグラフを作成するコードです。
----------------------------------------------------------------
Private Sub CommandButton1_Click()

  Dim I    As Long
  Dim WK_Chats As String
  Dim Count  As Long
  Dim WK_EOF  As String
  Dim 開始   As Long
  
  開始 = 2
  Conut = 0
  WK_EOF = "False"
  WK_Chats = "off"
  '
  Application.ScreenUpdating = False
  For I = 2 To 65536 - 1 Step 1
    If IsNull(Range("B" & I)) Or Range("B" & I) = "" Then
      If 開始 = I Then
        Exit For
      End If
      WK_Chats = "on"
      WK_EOF = "True"
    Else
      '1行づつカウントしつつ、10になったら、グラフフラグをONにする
      Count = Count + 1
      If Count Mod 10 = 0 Then
        WK_Chats = "on"
      End If
    End If
    '
    If WK_Chats = "on" Then
      'グラフの作成
      Charts.Add
      ActiveChart.ChartType = xlColumnClustered
      ActiveChart.SetSourceData Source:=Sheets("Sheet5").Range("K9")
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection(1).XValues = "=Sheet5!R" & 開始 & "C1:R" & I & "C1"
      ActiveChart.SeriesCollection(1).Values = "=Sheet5!R" & 開始 & "C2:R" & I & "C2"
      ActiveChart.SeriesCollection(1).Name = "=Sheet5!R1C2"
      ActiveChart.SeriesCollection(2).Values = "=Sheet5!R" & 開始 & "C3:R" & I & "C3"
      ActiveChart.SeriesCollection(2).Name = "=Sheet5!R1C3"
      ActiveChart.SeriesCollection(3).Values = "=Sheet5!R" & 開始 & "C4:R" & I & "C4"
      ActiveChart.SeriesCollection(3).Name = "=Sheet5!R1C4"
      ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet5"
      '
      If WK_EOF = "True" Then
        Exit For
      End If
      WK_Chats = "off"
      開始 = I + 1
    End If
  Next I
  
  Application.ScreenUpdating = True

End Sub
'----------------------------------------------------------------------
もうチョット簡単に出来そーな気がするんですけど・・・。
このままだと、グラフが重なり合って作成されるため、
位置の調整や大きさ、などなどの処理が必要になってくるかと思います。

こんな感じですけど、参考になればと思います。

【17600】Re:複数グラフシート作成について
お礼  とみー  - 04/9/3(金) 9:28 -

引用なし
パスワード
   早速の回答、どうもです。
提示していただいた方法を参考に、作ってみたいと思います。
また何か分からないことがあったら、質問させてください。

ありがとうございました。

11187 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free