Excelノート 25-01 グラフ

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

1  パレート図で、折れ線グラフの位置を、棒グラフの右端にずらすには
2  パレート図をマクロで描くには
3  セルをクリックして、グラフのデータを変更するには?
4  グラフのデータ範囲に変数を使うには?
5  数値を直接コードからに指定してグラフを作成するには?
6  複数範囲のグラフを一括して作成するには?
7  既存のグラフをサイズを揃えてきれいに並べるには?
8  シート内の全てのグラフのフォントサイズを一気に変更するには?
9  任意の設定のグラフをデフォルトにするには?
10 積み上げ縦棒グラフ+折れ線グラフを作成するには?

11  ChartType プロパティの一覧
12  その他のグラフのプロパティ

1

パレート図で、折線グラフの位置を、棒グラフの右端にずらすには

クリックすると大きくなります
1. グラフのアイコンをクリックし、「グラフウィザード」で、
  「ユーザー設定」、「2軸上の折れ線と縦棒」を選択。
2. 「次へ」で次の画面の、データ範囲を指定し、「系列」で、    
  「系列1」のほうの「名前」を「=Sheet1!$A$2」に、
  「系列2」のほうの「名前」を「=Sheet1!$A$3」に、
  「系列2」のほうの「値」を「=Sheet1!$B$3:$H$3」に変更。
   (各欄の右側のボタンで直接セル範囲からも選択可)
  「次へ」で進んで3/4ページで「軸」を開き、
  「第2軸(上/右側)」の「X/項目軸」にチェックを入れます
  (これで全てのチェックボックスにチェックが入ります) 
3. 次に、棒グラフを右クリック、「データ系列の書式設定」
  「オプション」、「棒の間隔」を「0」にし、
  隙間のないグラフにします。
4. 次に、上側のX軸を右クリック、「軸の書式設定」→
  「目盛」ページで「項目境界で交差する」のチェックを外す。
あとは左右のY軸を右クリックし、
「軸の書式設定」で目盛範囲を任意に設定します。
2

パレート図をマクロで描くには

上記No.1の操作をマクロにしました。データ範囲をドラッグ(上の図の例だと、A1からH3のセル)して指定します。
Sub パレート図作成()
 Dim aa As Variant, bb As Variant, LastCol As Integer, data As Range
 Dim kei As Variant, i As Integer, WS As Worksheet, N As String
 On Error GoTo ERROR1
 Application.DisplayAlerts = False
  '警告を非表示
 'グラフを作成するデータ範囲を指定
  'ここでデータ範囲を指
定します。
  Set data = Application.InputBox("データ範囲のセルを選択して下さい", "セルの指定", Type:=8)  
 Application.ScreenUpdating = False
'画面更新停止
 N = ActiveSheet.Name
 Set WS = Sheets(N)
 LastCol = WS.Cells(1, Columns.Count).End(xlToLeft).Column
'1行目最終列取得
 '系列1のデータを合計
 kei = WS.Cells(2, 3)
 For i = 4 To LastCol
 kei = kei + WS.Cells(2, i)
 Next
 aa = Application.InputBox(Prompt:="左の軸の最大値を入力してください", Default:=kei, Type:=1)
 bb = Application.InputBox(Prompt:="右の軸の最大値を入力してください", Default:=100, Type:=1)
 'InputBoxのキャンセル処理
 If (VarType(aa) = vbBoolean) Then
  Exit Sub
 End If
 If (VarType(bb) = vbBoolean) Then
  Exit Sub
 End If
 On Error GoTo ERROR2
 Charts.Add
 ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:="2 軸上の折れ線と縦棒"
 'グラフのデータ範囲を設定
 ActiveChart.SetSourceData Source:=data
 '折れ線グラフのデータ範囲を設定
 ActiveChart.SeriesCollection(2).Values = "=" & N & "!R3C2:R3C" & LastCol
 ActiveChart.Location Where:=xlLocationAsObject, Name:=N
 With ActiveChart
  .SeriesCollection(2).AxisGroup = 2
'インデックス番号
  .SeriesCollection(2).ChartType = xlLineMarkers
'データ マーカー付き折れ線グラフ
  .HasAxis(xlCategory, xlPrimary) = True
'系列1のX軸を表示
  .HasAxis(xlCategory, xlSecondary) = True
'系列2のX軸を表示
  .HasAxis(xlValue, xlPrimary) = True
'系列1のY軸を表示
  .HasAxis(xlValue, xlSecondary) = True
'系列2のY軸を表示 
 End With
 '系列1、棒グラフの間隔を0にする
 With ActiveChart.ChartGroups(1)
  .Overlap = 0
  .GapWidth = 0
 End With
 '系列2のX軸で、項目の境界で数値軸が項目軸と交差しない
 ActiveChart.Axes(xlCategory, xlSecondary).AxisBetweenCategories = False
 With ActiveChart.Axes(xlValue)
'系列1のY軸
  .MaximumScale = aa
'左の軸の最大値
  .MinimumScale = 0
'左の軸の最小値
 End With
 With ActiveChart.Axes(xlValue, xlSecondary)
'系列2のY軸
  .MaximumScale = bb
'右の軸の最大値
  .MinimumScale = 0
'右の軸の最小値
 End With
 Application.ScreenUpdating = True
'画面更新停止を再開
 Application.DisplayAlerts = True
'警告を再表示
 Exit Sub
ERROR1:
 Exit Sub
ERROR2:
 MsgBox "必要なデータがありません。あるいはシートの名前に()を使っています"
 Application.DisplayAlerts = False
'警告を非表示
 ActiveWindow.SelectedSheets.Delete
'未完成のグラフシートを削除
 Application.DisplayAlerts = True
'警告を再表示
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
3

セルをクリックして、グラフのデータを変更するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200105/01050180.txt
 「セルをクリックして、グラフのデータを変更するには?」 
  【VBAラウンジ】

この様なデータシートで、Sheet14に作成された折れ線グラフを対象にしました。
***** Sheet13 *****
A B C D E F G H I J K L M
1
2
3
4
5
6  氏名  1月  2月  3月  4月  5月  6月  7月  8月  9月  10月  11月  12月
7   A    50  52  51  52  51   53  51  52   51  55   52   51
8   B   60  62  61  62  63   62  61  62   63  61   62   63

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim gyou As Long, retu As Integer, data As Variant
 gyou = Target.Row
 retu = Target.Column
 If gyou < 6 Or retu <> 1 Then Exit Sub
 If Target.Value = "" Then
  MsgBox "データがありません"
  Exit Sub
 End If
 data = Range(Cells(gyou, 1), Cells(gyou, 13)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
 Sheets("Sheet14").Select
 ActiveSheet.ChartObjects("グラフ 1").Activate
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SetSourceData Source:=Sheets("Sheet13").Range(data), PlotBy:=xlRows
 Cancel = True
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
4

グラフのデータ範囲に変数を使うには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin3/wwwlng.cgi?print+200105/01050041.txt
  「グラフ」 【グラフラウンジ】
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200203/02030108.txt
  「グラフのActiveChart.SetSourceData Source:= の書き方について。」 【VBAラウンジ】

例えば、
 ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B2:D7"), PlotBy:= xlColumns
の場合、下のように B2:D7 を直接 Cells に置き換えるとエラーになります。
 ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(a, b), Cells(c, d)), PlotBy:= xlColumns
この場合、一旦AddressプロパティでA1:B2形式にして変数に格納します。  
 data = Range(Cells(a, b), Cells(c, d)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
 ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(data), PlotBy:=xlColumns


また、次のようなR1C1形式の場合
 ActiveChart.SeriesCollection(1).XValues="='Sheet1'!R4C2:R110C2"
変数以外のところを "" で囲って & で繋ぎます。
 ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!R" & a & "C" & b & ":R" & c & "C" & d
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
5

数値を直接コードからに指定してグラフを作成するには?
http://www.keep-on.com/~excelyou/2000lng4/200005/00050111.txt
  「グラフ表示で、セルを使用しないで表示できますか?」 
  【VBAラウンジ】

Sub Test()
 Dim x As Variant
 Dim y As Variant
 Dim co As ChartObject
 x = Array(1, 2, 3)
 y = Array(10, 20, 30)
 Set co = ActiveSheet.ChartObjects.Add(10, 10, 300, 200)
 With co.Chart.SeriesCollection.NewSeries
  .Values = y
  .XValues = x
 End With
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub Test2()
 Dim i As Integer, x As Variant, y As Variant
 Dim co As ChartObject
 x = "={"
 y = "={"
 For i = 1 To 9
  x = x & i & ","
  y = y & i + 1 & ","
 Next i
 x = x & i & "}"
 y = y & i + 1 & "}"
 Set co = ActiveSheet.ChartObjects.Add(10, 10, 300, 200)
 co.Chart.ChartType = xlXYScatter
 With co.Chart.SeriesCollection.NewSeries
  .Values = y
  .XValues = x
 End With
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
6

複数範囲のグラフを一括して作成するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200104/01040012.txt
  「グラフ範囲の指定」  【VBAラウンジ】

クリックすると、大きくなります

Sub Graph()
 Dim objChart
 Dim i As Long, j As Integer, k As Integer
 Dim nLeft As Long, nTop As Long, a As Integer, b As Integer
 Const CWIDTH = 200
                    'グラフの横幅(ポイント単位)
 Const CHEIGHT = 150                    
'グラフの高さ(ポイント単位)
 a = Application.InputBox(Prompt:="全部でいくつのグラフを作成しますか?", Type:=1)
 b = Application.InputBox(Prompt:="横に何個のグラフを作成しますか?", Type:=1)
 
'開始セルを設定する
 Worksheets("Sheet1").Activate
 Range("H2").Activate
 j = 2
 For i = 1 To a
 If Cells(j, 2) = "" Then Exit Sub              
'データがなくなったら終了
 nLeft = ((i - 1) Mod b) * CWIDTH + ActiveCell.Left
 nTop = Int((i - 1) / b) * CHEIGHT + ActiveCell.Top
 Set objChart = Worksheets("Sheet1").ChartObjects.Add _
 (nLeft, nTop, CWIDTH, CHEIGHT)
 With objChart.Chart
  
'グラフ種類:積み上げ縦棒
  .ChartType = xlColumnStacked
  
'グラフのデータ範囲
  k = j + 6
  .SetSourceData _
  Source:=Range(Cells(j, 2), Cells(k, 6)), PlotBy:=xlRows
 End With
 j = j + 8
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

7

 既存のグラフをサイズを揃えてきれいに並べるには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin3/wwwlng.cgi?print+200107/01070037.txt
  「グラフを任意の個数で横に並べるには?」 
  【グラフラウンジ】

シート内に全てのグラフを、任意の大きさで、指定の場所に整列させます
 Sub miko_Test4()
  Dim ch
  Dim a As String, b As String, i As Integer, j As Integer, k As Integer
  Dim m As Double, n As Double, p As Long, q As Long, r As Long, s As Long
  Dim aa As Range, mm As Double, nn As Double
  On Error GoTo TRAP
  a = Application.InputBox(Prompt:="横に何個のグラフを作成しますか?", Type:=1)
  b = Application.InputBox(Prompt:="縦に何個のグラフを作成しますか?", Type:=1)
  p = Application.InputBox(Prompt:="横幅は何ポイントにしますか?", Default:=200, Type:=1) '横幅
  q = Application.InputBox(Prompt:="縦幅は何ポイントにしますか?", Default:=100, Type:=1) '縦幅
  r = Application.InputBox(Prompt:="横間隔は何ポイントに空けますか?", Default:=20, Type:=1)
  s = Application.InputBox(Prompt:="縦横間隔は何ポイントに空けますか?", Default:=20, Type:=1)
  Set aa = Application.InputBox("最初にグラフを表示するセルをクリックして下さい", "セルの指定", Type:=8)
  mm = aa.Left
  nn = aa.Top
  m = mm - p
  n = nn - q
  k = 0
  For i = 1 To b
   n = n + q + s
   For j = 1 To a
    m = m + p + r
    k = k + 1
    Set ch = Worksheets("Sheet1").ChartObjects(k)
    If ch Is Nothing Then Exit Sub
    With ch
     .Left = m
     .Top = n
     .Width = p
     .Height = q
    End With
   Next j
   m = mm - p
  Next i
  TRAP:
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
8

シート内の全てのグラフのフォントサイズを一気に変更するには?

Sub 全グラフ変更_グラフエリアの書式設定()
 Dim ch
 Dim a As Integer, k As Integer
 On Error GoTo PRO2
 a = Application.InputBox(Prompt:="フォントサイズはいくつにしますか?", Default:=10, Type:=1)
 k = 0
 Do
 k = k + 1
 Set ch = Worksheets("Sheet1").ChartObjects(k)
 If ch Is Nothing Then Exit Sub
 ch.Activate
 ActiveChart.ChartArea.Select
 Selection.Font.Size = a 'フォントサイズを指定の数値に変更
 Loop
PRO2:
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
9

任意の設定のグラフをデフォルトにするには?

グラフウィザードを起動して、【完了】ボタンを押しただけで作られるグラフです。
デフォルトだと、タイトルのない棒グラフになっていると思います。
 1. まず、好みの設定のグラフを作ります。
 2. 作ったグラフを選択し、右クリック【グラフの種類】【ユーザー設定】
   選択元【ユーザー定義】にチェックを入れ、【追加】。
   適当な名前を入れて、【OK】。
   【標準グラフに設定】ボタンをクリック、【OK】です。   
 ※ デフォルトのグラフを元に戻すには、【ユーザー定義】で追加したグラフと、
   それが標準になったグラフを削除すればOKです。  
10

積み上げ縦棒グラフ+折れ線グラフを作成するには?

1. データ範囲を選択し、グラフウィザードで【積み上げ縦棒】グラフを作ります。
2. 折れ線グラフにしたい棒グラフの系列を選択し、右クリック【グラフの種類】で【折れ線グラフ】を選択します。
11

ChartType プロパティの一覧

ChartType プロパティ グラフの種類を設定します。
グラフの種類 詳細
縦棒 集合縦棒
3-D 集合縦棒
積み上げ縦棒
3-D 積み上げ縦棒
100% 積み上げ縦棒
3-D 100% 積み上げ縦棒
3-D 縦棒 xl3Dcolumn
xlColumnClustered
xl3DcolumnClustered
xlColumnStacked
xl3DcolumnStacked
xlColumnStacked100
xl3DcolumnStacked100
xl3Dcolumn  
横棒 集合横棒
3-D 集合横棒
積み上げ横棒
3-D 積み上げ横棒
100% 積み上げ横棒
3-D 100% 積み上げ横棒
xlBarClustered
xl3DBarClustered
xlBarStacked
xl3DBarStacked
xlBarStacked100
xl3DBarStacked100
折れ線 折れ線
データ マーカー付き折れ線
積み上げ折れ線
データ マーカー付き積み上げ折れ線
100% 積み上げ折れ線
データ マーカー付き 100% 積み上げ折れ線
3-D 折れ線
xlLine
xlLineMarkers
xlLineStacked
xlLineMarkersStacked
xlLineStacked100
xlLIneMarkersStacked100
xl3DLine  

分割円
3-D 円
分割 3-D 円
補助円グラフ付き円
補助縦棒グラフ付き円
xlPie
xlPieExploded
xl3Dpie
xl3DPieExploded
xlPieOfPie
xlBarOfPie
散布図 散布図
平滑線付き散布図
平滑線付き散布図 (データ マーカーなし)
折れ線付き散布図
折れ付き散布図 (データ マーカーなし)
xlXYScatter
xlXYScatterSmooth
xlXYScatterSmoothNoMarkers
xlXYScatterLines
xlXYScatterLinesNoMarkers
バブル バブル
3-D 効果付きバブル
xlBubble
xlBubble3DEffect

3-D 面
積み上げ面
3-D 積み上げ面
100% 積み上げ面
3-D 100% 積み上げ面
xlArea
xl3DArea
xlAreaStacked
xl3DAreaStacked
xlAreaStacked100
xl3DAreaStacked100
ドーナツ ドーナツ
分割ドーナツ
xlDoughnut
xlDoughnutExploded
レーダー レーダー
データ マーカー付きレーダー
塗りつぶしレーダー
xlRadar
xlRadarMarkers
xlRadarFilled
等高線 3-D 等高線
等高線 (トップ ビュー)
3-D 等高線 (ワイヤフレーム)
等高線 (トップ ビュー - ワイヤフレーム)
xlSurface
xlSurfaceTopView
xlSurfaceWireframe
xlSurfaceTopViewWireframe
株価 高値 - 安値 - 終値
出来高 - 高値 - 安値 - 終値
始値 - 高値 - 安値 - 終値
出来高 - 始値 - 高値 - 安値 - 終値
xlStockHLC
xlStockVHLC
xlStockOHLC
xlStockVOHLC
円柱 集合円柱縦棒
集合円柱横棒
積み上げ円柱縦棒
積み上げ円柱横棒
100% 積み上げ円柱縦棒
100% 積み上げ円柱横棒
3-D 円柱縦棒
xlCylinderColClustered
xlCylinderBarClustered
xlCylinderColStacked
xlCylinderBarStacked
xlCylinderColStacked100
xlCylinderBarStacked100
xlCylinderCol
円錐 集合円錐縦棒
集合円錐横棒
積み上げ円錐縦棒
積み上げ円錐横棒
100% 積み上げ円錐縦棒
100% 積み上げ円錐横棒
3-D 円錐縦棒
xlConeColClustered
xlConeBarClustered
xlConeColStacked
xlConeBarStacked
xlConeColStacked100
xlConeBarStacked100
xlConeCol
ピラミッド 集合ピラミッド縦棒
集合ピラミッド横棒
積み上げピラミッド縦棒
積み上げピラミッド横棒
100% 積み上げピラミッド縦棒
100% 積み上げピラミッド横棒
3-D ピラミッド縦棒
xlPyramidColClustered
xlPyramidBarClustered
xlPyramidColStacked
xlPyramidBarStacked
xlPyramidColStacked100
xlPyramidBarStacked100
xlPyramidCol
12

その他のグラフのプロパティ

Weight
 プロパティ
線の太さを設定します xlHairline
xlThin
xlMedium
xlThick
極細線
細線
中太線
太線
LineStyle
 プロパティ
線の種類を設定 xlContinuous
xlDash
xlDashDot
xlDashDotDot
xlDot
xlDouble
xlSlantDashDot
xlLineStyleNone
直線
鎖線
一点鎖線
二点鎖線
点線
二重線
斜線
線なし
MajorTickMark
  プロパティ
軸のメモリの種類を設定 xlTickMarkNone
xlTickMarkInside
xlTickMarkOutside
xlTickMarkCross
MinorTickMark
  プロパティ
軸の補助メモリの種類を
          設定
xlTickMarkNone
xlTickMarkInside
xlTickMarkOutside
xlTickMarkCross
HasTitle
 プロパティ
軸やグラフのタイトルの
表示・非表示を設定
True
False
タイトルを表示する
表示しない
ChartTitle
 プロパティ
グラフの タイトルを設定      
HasMajorGridlines
  プロパティ
HasMinorGridlines
  プロパティ
主軸の目盛線の
   表示・非表示を設定
主軸の補助目盛線の
  表示・非表示を設定
True   
False   
目盛線を表示する
   〃 表示しない
HasLegend
 プロパティ
凡例の表示・非表示を
            設定
True   
False   
凡例を表示する
 〃 表示しない
ApplyDataLabels
   メソッド
データ要素、データ系列、
グラフにあるデータ系列の
いずれかに、
データ ラベルを付けます
xlDataLabelsShowNone    
xlDataLabelsShowValue    
xlDataLabelsShowPercent
xlDataLabelsShowLabel   
xlDataLabelsShowLabelAndPercent
ラベルなし
データ値
全体の%
項目名。既定値
%と項目名
HasDataTable
 プロパティ
グラフにデータ テーブルを
         追加します
True   
False  
テーブルを追加する
   〃  追加しない
Crosses
 プロパティ
指定された軸と他の軸との
     交点を設定します
xlAxisCrossesAutomatic
xlMinimum
xlMaximum
xlAxisCrossesCustom
 
自動的に決定
軸の最小値で交差
軸の最大値で交差
CrossesAt
プロパティの値で交差
TickLabelSpacing
 プロパティ
目盛ラベルを付ける
  間隔を示す項目数や
  データ系列数を設定
 
TickMarkSpacing
 プロパティ
目盛を付ける間隔を
  示す項目数や
  データ系列数を設定
 
AxisBetween
 Categories
  プロパティ
True の場合、項目の
  境界で数値軸が
  項目軸と交差します
True
False
交差する
交差しない
ReversePlotOrder
 プロパティ
True の場合、
  軸の方向を反転します
True
False
反転する
反転しない
ScaleType
 プロパティ
数値軸の
  目盛の種類を設定
xlScaleLinear
xlScaleLogarithmic
DisplayUnit
  プロパティ
指定された軸の
    単位ラベルを設定
xlNone  
xlHundreds  
xlThousands  
xlTenThousands  
xlHundredThousands  
xlMillions  
xlTenMillions  
xlHundredMillions  
xlThousandMillions  
xlMillionMillions  
xlCustom DisplayUnitCustom プロパティで表示単位の値を設定します。使用できる範囲は、0 〜 10E307 の値です。

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

このページのTOPへ     

inserted by FC2 system