- 1 -
■グラフの作成と操作
現場で測定されたデータを見える化(グラフ化)して、全体像を把握するためには、グラフツールが 重要であり、Excel には有用なグラフツールが搭載されている。Excel VBA では、このグラフの操作を 取り扱うことができるステートメントが用意されているので、以下にその要点を解説する。
■目次
●グラフの作成 ●グラフの種類とChartType プロパティの設定定数一覧表 ●散布図の打点にラベルを付与 ●グラフ データ系列の追加 ●グラフの基点変更 ●グラフの完成 ●グラフのコピー ●参考情報- 2 -
●グラフの作成
タイトルを含めたデータの範囲と系列の設定をしてグラフを作成する。 *データ範囲の設定 ・データ範囲 →タイトルを含む ・SetSourceData:=データ範囲 *系列の指定 ・引数PlotBy:= xlColumns →系列として列を指定 ・引数PlotBy:= xlRows →系列として行を指定 Sub 棒グラフの作成() Dim データ範囲 As RangeSet データ範囲 = Range(Cells(4,2), Cells(11,3)) ‘→ データ範囲の設定 ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered ‘→グラフの種類の設定 →棒グラフ ActiveChart.SetSourceData Source:=データ範囲, PlotBy:=xlColumns ‘→ 系列=列 End Sub *グラフの作成のExcel 資料は、 グラフの作成 を参照のこと。
●グラフの種類と ChartType プロパティの設定定数一覧表
グラフの種類 設定定数 集合縦棒 xlColumnClustered 積み上げ縦棒 xlColumnStacked 100%積み上げ縦棒 xlColumnStacked100 集合横棒 xlBarClustered 積み上げ横棒 xlBarStacked 100%積み上げ横棒 xlBarStacked100 折れ線 xlLine マーカー付き折れ線 xlLineMarkers 積み上げ折れ線 xlLineStacked 100%積み上げ折れ線 xlLineStacked100 円 xlPie 散布図 xlXYScatter バブル xlBouble 面 xlArea ドーナツ xlDoughnut 等高線 xlSerface 株価チャート xlStockHLC 円柱 xlCylinderColClustered 円錐 xlConeColColClustered ピラミッド xlPyramidColColClustered- 3 -
●散布図の打点にラベルを付与
散布図を作成した場合に、その打点にラベルを付与したいニーズがある。 Microsoft Excel には散布図の打点のデータ ポイントに自動的にテキストラベルを付ける組み込み コマンドはないが、Microsoft サポートとして、下記の資料が公開されているので参照のこと。 Excel 統計講座では、新 QC 七つ道具であるマトリックス・データ解析(主成分データ分析)の主成 分得点グラフ(散布図)の作成にて活用されている。 ★Microsoft サポート 散布図のデータ ポイントにラベルを追加するマクロは次の通りである。 → https://support.microsoft.com/ja-jp/kb/161513 参照 Microsoft Excel には、散布図のデータ ポイントに自動的にテキスト ラベルを付ける組み込み コマンドはないが、この処理を実行する Microsoft Visual Basic for Applications (VBA) マクロを 作成することができる。この資料にはこの処理を実行するサンプル マクロが記載されている。 *散布図の打点にラベルを付与に関するExcel 資料は、 ラベル付き散布図 を参照のこと。- 4 -
●グラフの打点にラベルとデータの付与
統計的品質管理のプログラミングでは、グラフの打点にラベルとデータを付与するニーズがある。 グラフの打点にラベルを付けるには、Point.ApplyDataLabels メソッドが使われる。 このメソッドについて、模擬的なX 管理図の例で以下に解説する。 ★対象のグラフ ラベルなし ラベル付き ★プログラム VBA 上のグラフには、3 つの系列があり、 系列1 → LCL 系列 2 → CL 系列 3 → UCL である。 各系列のデータポイント(5)に系列名とデータ(X)の値を記入するプログラムの例である。 グラフを選択してから、次のプログラムLABEL()を実行すると、上図のように、管理図の中心線 CL, 管理限界線LCL,UCL に、ラベルとデータが付与される。 *グラフの打点にラベルを付与するExcel プログラムは、 グラフのラベル付加 を参照のこと。 Sub LABEL() '中心線 Cl、管理限界線 LCL,UCL にラベルとデータを記入Dim K As Integer 'k:群の数 K = 5 'LCL →系列(1)のデータポイント(k=5)に系列名とデータを記入する。 ActiveChart.SeriesCollection(1).Points(K).ApplyDataLabels ActiveChart.SeriesCollection(1).Points(K).DataLabel.Select Selection.ShowSeriesName = True ‘→系列名(LCL)を表示する。 Selection.ShowValue = True ‘→系列(1)のデータポイント(5)の値を表示する。 Selection.Separator = "=" ‘→系列名と値の仕切り記号”=”を表示する。 Selection.Position = xlLabelPositionRight ‘→打点の右側にデータラベルを配置 'CL ActiveChart.SeriesCollection(2).Points(K).ApplyDataLabels ActiveChart.SeriesCollection(2).Points(K).DataLabel.Select Selection.ShowSeriesName = True ‘→系列名(CL)を表示する。 Selection.ShowValue = True ‘→系列(2)のデータポイント(5)の値を表示する。 Selection.Separator = "=" ‘→系列名と値の仕切り記号”=”を表示する。 Selection.Position = xlLabelPositionRight ‘→打点の右側にデータラベルを配置 'UCL ActiveChart.SeriesCollection(3).Points(K).ApplyDataLabels ActiveChart.SeriesCollection(3).Points(K).DataLabel.Select
Selection.ShowSeriesName = True ‘→系列名(UCL)を表示する。
Selection.ShowValue = True ‘→系列(3)のデータポイント(5)の値を表示する。 Selection.Separator = "=" ‘→系列名と値の仕切り記号”=”を表示する。 Selection.Position = xlLabelPositionRight ‘→打点の右側にデータラベルを配置 End Sub 0 1 2 3 4 5 6 0 1 2 3 4 5 X 群No. X 管理図 LCL= 1 CL= 3 UCL= 5 0 1 2 3 4 5 6 0 1 2 3 4 5 X 群No. X 管理図
- 5 - ★データラベルの配置位置 データ ラベルが配置される位置は、Excel VBA ヘルプより、次のように指定できる。 ActiveChart.SeriesCollection(3).Points(K).ApplyDataLabels ActiveChart.SeriesCollection(3).Points(K).DataLabel.Select Selection.Position = xlLabelPositionRight 名 前 説 明 xlLabelPositionAbove データ要素の上にデータ ラベルを配置します。 xlLabelPositionBelow データ要素の下にデータ ラベルを配置します。
xlLabelPositionBestFit Microsoft Office Excel 2007 がデータ ラベルの位置を制御します。
xlLabelPositionCenter データ要素上あるいは横棒グラフまたは円グラフの内側でデータ ラベルを中央揃えします。 xlLabelPositionCustom カスタムの位置にデータ ラベルを配置します。 xlLabelPositionInsideBase データ要素下端の内側にデータ ラベルを配置します。 xlLabelPositionInsideEnd データ要素上端の内側にデータ ラベルを配置します。 xlLabelPositionLeft データ要素の左側にデータ ラベルを配置します。 xlLabelPositionMixed 複数の位置にデータ ラベルを配置します。 xlLabelPositionOutsideEnd データ要素上端の外側にデータ ラベルを配置します。 xlLabelPositionRight データ要素の右側にデータ ラベルを配置します。
- 6 -
●グラフ データ系列の追加
パレート図は、棒グラフと折線グラフを組み合わせたグラフであり、グラフには複数の系列がある場 合がある。系列はSeries オブジェクトで表され、Series オブジェクトの集合体が SeriesCollection(コ レクション)であり、SeriesCollection(コレクション)はデータ系列を表す。 パレート図の場合は、系列 1(コレクション 1)として、不適合品数の棒グラフを作成し、その後、 系列2(コレクション 2)として、累積百分率の折線グラフを作成する必要がある。 系列 1 の不適合品数の棒グラフに、系列 2 の累積比率の折線グラフと第 2 軸を追加するプログラム VBA を以下に示す。 Sub 系列 2 の追加() '累積百分率のグラフ追加 →系列2:累積百分率の折れ線グラフの追加 ActiveChart.SeriesCollection.NewSeries '→新しい系列の追加 →系列 2 ActiveChart.SeriesCollection(2).Name = Cells(4, 6) '→累積百分率 ActiveChart.SeriesCollection(2).Values = Range(Cells(5, 6), Cells(11, 6)) ActiveChart.SeriesCollection(2).XValues = Range(Cells(5, 2), Cells(11, 2)) '第 2 軸の追加 ActiveChart.SeriesCollection(2).Select ActiveChart.SeriesCollection(2).AxisGroup = xlSecondary '→第 2 軸の追加 ActiveChart.SeriesCollection(2).Select ActiveChart.SeriesCollection(2).ChartType = xlLineMarkers '→折線グラフ End Sub 詳細は、 → グラフの系列追加 を参照のこと。
- 7 -
●グラフの基点変更
左下の折線グラフ(累積比率)は、原点からスタートしていないので、折線グラフ(累積比率)のデ ータの選択範囲を変更し、折線グラフの基点を変更し、右下のように、折線グラフが原点からスタート するグラフを作成する。この方法は、パレート図の作成に展開することができる。 折れ線グラフの基点変更に関するVBA コードは次のとおりである。 Sub 基点変更() '折線グラフのデータ範囲の変更 →タイトルを含めたデータ範囲を選択 ActiveChart.SeriesCollection(2).Values = Range(Cells(4, 6), Cells(11, 6)) ActiveChart.SeriesCollection(2).XValues = Range(Cells(4, 2), Cells(11, 2)) '折線グラフの第 2 横軸を表示にするActiveChart.SetElement (msoElementSecondaryCategoryAxisShow) '項目軸(横軸)の基点変更
ActiveChart.Axes(xlCategory, xlSecondary).Select
ActiveChart.Axes(xlCategory, xlSecondary).AxisBetweenCategories = False '折線グラフの第 2 横軸を非表示にする ActiveChart.SetElement (msoElementSecondaryCategoryAxisWithoutLabels) '累積比率の縦軸の表示を小数点以下 0 桁の%表示とする ActiveChart.Axes(xlValue, xlSecondary).Select Selection.TickLabels.NumberFormatLocal = "0%" End Sub 詳細は、 → グラフの基点変更 を参照のこと。
- 8 -