| 
    
     |  | 初めまして。グラフ作成のマクロを作成しているのですがどうしてもわからないため教えていただけるとうれしいです。 "合格率集計"Sheetに下記のようなデータがあります。
 
 (品名)        (日付)    (比率)   (合格率)
 *りんご       2006/12/5W     95.26%    100.00%
 *りんご       2007/01/1W     95.45%    100.00%
 *りんご       2007/01/2W     95.61%    100.00%
 *りんご       2007/01/3W     95.30%    100.00%
 *みかん       2006/12/5W     96.03%    100.00%
 *みかん       2007/01/1W     96.25%    100.00%
 *みかん       2007/01/2W     96.32%    100.00%
 *みかん       2007/01/1W     44.52%    100.00%
 *ばなな       2007/01/2W     65.27%     40.00%
 *ばなな       2007/01/3W     81.60%     45.16%
 
 以上のデータで、品名毎にグラフを作りたいと思っていて以下のようなコードで作ることはできました。が、品名毎に日付がバラバラなので日付の数を統一して見やすくしようと思ってます。
 ↓別シートに統一したい日付を入力しています。
 2006/07/M
 2006/08/M
 2006/09/M
 2006/10/M
 2006/11/M
 2006/12/1W
 2006/12/2W
 2006/12/3W
 2006/12/4W
 2006/12/5W
 2007/01/1W
 
 以上の日付を全ての品名毎に作られるグラフのX軸に設定したいのです。
 それで上記の日付と"合格率集計"Sheetに入力されている日付が一致しているところに比率と合格率の値をいれていかなければならないのですがいくら考えても道が開けません。お忙しいところ恐縮ですがご教授頂きます様よろしくお願い致します。
 
 グラフを作成するコード↓
 
 Sub Graph_Maker()
 
 Application.ScreenUpdating = False
 Dim d As Range, d1 As Range, d2 As Range
 Dim Data As Worksheet
 Dim Graph As Worksheet
 Dim CChtPos As Range
 Dim sss As String
 Dim i As Integer
 i = 1
 Dim CCHT As Chart
 Set Graph = Sheets("合格率グラフ")
 Set Data = Sheets("合格率集計")
 Graph.DrawingObjects.Delete '既存の図形を消去
 Data.ChartObjects.Delete '既存のグラフを消去
 Set CChtPos = Data.Cells(6, 6).Resize(17.5, 7)
 With Data.Cells(2, 2).Resize(17.5, 7)
 Set CCHT = .Parent.ChartObjects.Add(.Left, .Top, .Width, .Height).Chart
 End With
 
 Dim A As Range
 
 For i = 1 To 4
 If Data.Cells(2, (i - 1) * 15 + 1) = "" Then GoTo AAA
 
 Set A = Graph.Cells(6, (i - 1) * 10 + 2)
 With Data
 Set d1 = .Cells(2, (i - 1) * 15 + 1)
 Set d2 = .Cells(2, (i - 1) * 15 + 1).End(xlDown)
 sss = d1.Value '最初の品名
 
 For Each d In .Range(d1, d2)
 If d.Value <> sss Then
 makeGraph .Range(d1, d.Offset(-1)), CChtPos, A, CCHT, i, sss
 dsaf = d.Row
 sss = d.Value
 Set d1 = d '.Offset(1)
 Set CChtPos = CChtPos.Offset(26)
 Set A = A.Offset(26)
 End If
 Next d
 makeGraph .Range(d1, d2), CChtPos, A, CCHT, i, sss '最後のグラフ
 End With
 AAA:
 Next i
 
 'Application.DisplayAlerts = False
 'Data.Delete
 'Application.DisplayAlerts = True
 
 'Objectの開放
 Set Data = Nothing
 Set Graph = Nothing
 Set A = Nothing
 Set CCHT = Nothing
 
 Application.ScreenUpdating = True
 Application.DisplayAlerts = False
 Worksheets("合格率集計").Delete
 Application.DisplayAlerts = False
 Worksheets("合格率データ").Delete
 End Sub
 
 Private Sub makeGraph(r1 As Range, CChtPos As Range, A As Range, CCHT As Chart, i As Integer, sss As String)
 
 With CCHT
 .ApplyCustomType ChartType:=xlBuiltIn, TypeName:="2 軸上の折れ線"
 .SeriesCollection.NewSeries
 .SeriesCollection.NewSeries
 .HasAxis(xlValue, xlPrimary) = True '系列1のY軸を表示
 .HasAxis(xlValue, xlSecondary) = True '系列2のY軸を表示
 
 
 With .SeriesCollection(1)
 .XValues = r1.Columns(7) 'X軸項目
 .Values = r1.Columns(13) '系列1(比率)の範囲
 .ChartType = xlLineMarkers
 .Name = "比率"
 End With
 
 With .SeriesCollection(2)
 '.AxisGroup = 2 'インデックス番号
 .XValues = r1.Columns(7) 'X軸項目
 .Values = r1.Columns(14) '系列2(合格率)の範囲
 .ChartType = xlLineMarkers  'グラフ形式を折れ線グラフに設定
 .Name = "合格率"
 End With
 
 With .Axes(xlCategory).TickLabels 'X軸項目の設定
 .Orientation = xlUpward
 End With
 
 .HasTitle = True
 .ChartTitle.Characters.Text = sss
 
 End With
 With CCHT.Axes(xlValue)
 .MinimumScale = 0.8
 .MaximumScale = 1
 .MinorUnitIsAuto = True
 .MajorUnitIsAuto = True
 .Crosses = xlAutomatic
 .ReversePlotOrder = False
 .ScaleType = xlLinear
 .DisplayUnit = xlNone
 End With
 
 End Sub
 
 |  |