Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
指定のシートからユーザー選択性のデータをグラフに変換する
投稿日時: 20/08/10 16:37:32
投稿者: saccer

ほぼ連続の質問で申し訳ございません。
また、昨日の質問でこの掲示板の仕組みをよく理解しておらず、
解決したらすぐに閉じてしまい申し訳ございませんでした。
 
 
まだ、自分でも考えていますが、本当に初心者なので多分わからないと思うので質問させてください。
 

Sub Macro4()
'
' Macro4 Macro
' 炭化水素
'

'
    Sheets("結果記録").Select
    Sheets("炭化水素").Select
    ActiveWindow.SelectedSheets.Delete  '古い結果のグラフの削除
    
    Charts.Add after:=Worksheets("結果記録")  '新しい結果のグラフの挿入
    ActiveChart.Name = "炭化水素"
    ActiveChart.SetSourceData Source:=Range( _
        "結果記録!$B$3:$B$9,結果記録!$F$3:$H$9,結果記録!$L$3:$L$9")
    '?ここのデータは、2〜16個のユーザー選択性を与えたい(結果まとめシートから固定)
    
         
    ActiveChart.PlotBy = xlColumns
    
    ActiveChart.FullSeriesCollection(1).IsFiltered = False
    '?このデータ(1)は下のデータテーブルに出てきてほしいだけでグラフにはいらない(実験番号のため)
    'この書き方だと消せませんでした
    ActiveChart.FullSeriesCollection(2).ChartType = xlColumnClustered
    ActiveChart.FullSeriesCollection(2).AxisGroup = 1
    ActiveChart.FullSeriesCollection(3).ChartType = xlColumnClustered
    ActiveChart.FullSeriesCollection(3).AxisGroup = 1
    ActiveChart.FullSeriesCollection(4).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection(4).AxisGroup = 1
    ActiveChart.FullSeriesCollection(5).ChartType = xlLine
    ActiveChart.FullSeriesCollection(5).AxisGroup = 2
    '(1)実験番号(グラフにはいらない)(2)(3)(4)各物質量%(積み上げ縦棒)
    '(5)総量g(ここのみ第2軸で折れ線にしたい)
    
    
    ActiveChart.SetElement (msoElementChartTitleCenteredOverlay)'グラフタイトルの表示
    ActiveChart.ChartTitle.Text = "炭化水素 ファラデー効率(%)"
    
    
    ActiveChart.SetElement (msoElementDataTableWithLegendKeys)'凡例マーカー付きデータテーブルの表示
    ActiveChart.ChartArea.Select
    ActiveChart.SetElement (msoElementLegendTop) '凡例の設定
    ActiveChart.Legend.Select  '凡例の位置
    Selection.Left = 400
    Selection.Top = 30

    
    ActiveChart.FullSeriesCollection(2).Select
    ActiveChart.ChartColor = 15                  'グラフの色の変更
    
    
    ActiveChart.ChartArea.Select
End Sub

 
 
こんな感じで、昨日ご指導していただいたVBAで作られた結果を、結果をまとめたシートのデータを参照して
グラフを作るマクロを組んでいます。
今回は、本当にわからなかったので最初は「マクロの記録」で記録してみたものから
組んでいます。(なのでまだ、For Nextやaryで文章の簡素化をできていません)
 
現在、自分でもよくわかっていない点は2点です。
 
@複雑なグラフの設定方法
 
ActiveChart.FullSeriesCollection(1).IsFiltered = False
    '?このデータ(1)は下のデータテーブルに出てきてほしいだけでグラフにはいらない(実験番号のため)
    'この書き方だと消せませんでした
    ActiveChart.FullSeriesCollection(2).ChartType = xlColumnClustered
    ActiveChart.FullSeriesCollection(2).AxisGroup = 1
    ActiveChart.FullSeriesCollection(3).ChartType = xlColumnClustered
    ActiveChart.FullSeriesCollection(3).AxisGroup = 1
    ActiveChart.FullSeriesCollection(4).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection(4).AxisGroup = 1
    ActiveChart.FullSeriesCollection(5).ChartType = xlLine
    ActiveChart.FullSeriesCollection(5).AxisGroup = 2
    '(1)実験番号(グラフにはいらない)(2)(3)(4)各物質量%(積み上げ縦棒)
    '(5)総量g(ここのみ第2軸で折れ線にしたい)

 
ここで、2軸型のグラフにするように設定しました。しかし、
ActiveChart.FullSeriesCollection(1)は実験データのサンプル番号なので下のデータテーブルには
表示してほしいけど、グラフには表示してほしくないデータです。
そのように設定する場合は何を使えばいいですか?
 
Aユーザー選択性のグラフ範囲の指定
 ActiveChart.SetSourceData Source:=Range( _
        "結果記録!$B$3:$B$9,結果記録!$F$3:$H$9,結果記録!$L$3:$L$9")
    '?ここのデータは、2〜16個のユーザー選択性を与えたい(結果まとめシートから固定)

 
ここの領域をユーザーが選択できるようにしたいです。
この部分に関してはまだよく考えていないので、Input関数でいけないかなあと今から試してみます。
 
良ければ、教えていただけませんか?

投稿日時: 20/08/10 18:36:02
投稿者: saccer

Sub Macro4()
'
' Macro4 Macro
' 炭化水素
'

'
    Sheets("結果記録").Select
    Sheets("炭化水素").Select
    ActiveWindow.SelectedSheets.Delete  '古い結果のグラフの削除
    
    Charts.Add after:=Worksheets("結果記録")  '新しい結果のグラフの挿入
    ActiveChart.Name = "炭化水素"
   ActiveChart.SetSourceData Source:=Range("結果記録!B3").CurrentRegion
    '?ここのデータは、2〜16個のユーザー選択性を与えたい(結果まとめシートから固定)
    
         
    ActiveChart.PlotBy = xlColumns
    
   ActiveChart.FullSeriesCollection(1).IsFiltered = True
   ActiveChart.FullSeriesCollection(2).IsFiltered = True
   ActiveChart.FullSeriesCollection(6).IsFiltered = True
   ActiveChart.FullSeriesCollection(7).IsFiltered = True
   ActiveChart.FullSeriesCollection(8).IsFiltered = True
   ActiveChart.FullSeriesCollection(3).ChartType = xlColumnClustered
   ActiveChart.FullSeriesCollection(3).AxisGroup = 1
   ActiveChart.FullSeriesCollection(4).ChartType = xlColumnClustered
   ActiveChart.FullSeriesCollection(4).AxisGroup = 1
   ActiveChart.FullSeriesCollection(5).ChartType = xlColumnStacked
   ActiveChart.FullSeriesCollection(5).AxisGroup = 1
   ActiveChart.FullSeriesCollection(9).ChartType = xlLine
   ActiveChart.FullSeriesCollection(9).AxisGroup = 2
    '(1)(2)(3)各物質量%(積み上げ縦棒)
    '(4)総量g(ここのみ第2軸で折れ線にしたい)
    
    
    ActiveChart.SetElement (msoElementChartTitleCenteredOverlay) 'グラフのタイトルの設定
    ActiveChart.ChartTitle.Text = "炭化水素 ファラデー効率(%)"
    
    
    ActiveChart.SetElement (msoElementDataTableWithLegendKeys) '凡例マーカー付きデータテーブルの表示
    ActiveChart.SetElement (msoElementLegendTop) '凡例の設定
    ActiveChart.Legend.Select  '凡例の位置
    Selection.Left = 400
    Selection.Top = 30
    ActiveChart.ChartColor = 22     'グラフの色の変更
    
    
    ActiveChart.ChartArea.Select
End Sub

 
お疲れさまです。
自己解決しました。
 
A
 
ActiveChart.SetSourceData Source:=Range("結果記録!B3").CurrentRegion

として全体のExcelの範囲から@にもかかりますが、
表示させない方法で項目を削っていく方向で進みました。
ただし、C列が文字データのため、グラフが思い通りの状態
にはできませんでしたが(ナンバリングの下に文字データが表示されてしまう)、
そもそも発表の時に使うデータはもう一度作り直すと思うので大丈夫でした。
 
@
 ActiveChart.FullSeriesCollection(1).IsFiltered = True

Falseで表記していて凡ミスをしていましたが、怪我の功名でこの方法でいらないデータを全消ししました。
 
 
お騒がせしました。

投稿日時: 20/08/11 10:17:24
投稿者: saccer

閉じます。
今後もよろしくお願いいたします。