- 締切済み
エクセルで2つの項目を下から規定数のデータでグラフ
お世話になります。 かなり以前にここで表の2つの項目(データ列)の下から任意の数のデータでグラフを作るマクロを手取り足取り教えてもらい非常に有効に展開しております。 今回は1つのBookの複数のシートに同じ書式の表を作って、各シート上でデータが入力されると列の下から任意の個数(30-50個)で自動でグラフが更新(マクロボタンクリックでもOK)されるようにしたいのです。 マクロはアクティブシートを対象に動くように出来れば1つのコードで各シートのボタンクリックでグラフが更新されるようにできるのではと期待しています。 このような複数のシートで別のシートの表を対象に動くマクロで想定される不具合に関しては全く知見無し。 ・シートは15枚程度で今後増える可能性あり。 ・グラフ対象の列はコードに合わせ込み可能なのでE列とG列等に割り当てて作表可能。(指定できれば尚ありがたい) ・列のデータは式が入っているケースもありますが、数字データの下 から規定数のデータでグラフ化。 ・空白セルは無い ちなみに現在使用しているコードは下記の物です。 '//------------------------'データ列2列 Sub GraphSauceChange8_2() Sheets("成績表").Select ⇒ ここをアクティブシートにしたい ActiveSheet.Unprotect Const MaxRows = 30 'データ範囲に指定する最大行数 Const ColNum1 = 5 '1つ目データ格納列 Const ColNum2 = 7 '2つ目データ格納列 Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "成績表" 'グラフ描写シート名 ⇒ 入力表と同じシート=アクティブシートです Dim GSh As Worksheet Dim DSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群1つ目範囲 Dim tgRange2 As Range 'データ群2つ目範囲 Dim tgRangeA As Range '上記合計範囲 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) ERow = DSh.Cells(DSh.Rows.Count, 1).End(xlUp).Row If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If Set tgRange1 = _ Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)) Set tgRange2 = _ Range(DSh.Cells(SRow, ColNum2), DSh.Cells(ERow, ColNum2)) Set tgRangeA = Union(tgRange1, tgRange2) '結合 GSh.ChartObjects(1).Chart.SetSourceData Source:=tgRangeA 'セット GSh.ChartObjects(1).Chart.SeriesCollection(1).Name = _ DSh.Cells(KoumokuRow, ColNum1).Value GSh.ChartObjects(1).Chart.SeriesCollection(2).Name = _ DSh.Cells(KoumokuRow, ColNum2).Value
- みんなの回答 (2)
- 専門家の回答
お礼
HohoPapaさん 毎度お世話になります。 質問の主旨が違っております。 シートの図を貼り付けますので今からすぐ日別の質問をアップしますのでそちらをご覧ください。
補足
補足やお礼枠に図の添付ができないようですので、いま図を添付して再質問させてもらいました。 いつもお手数をおかけします。