• ベストアンサー

エクセルデータベースからグラフ作成

お伺いいたします。 ある強度の管理図を作成したいのですが sheets1にデータ  A  、B   、C  1 No、日付、強度、 2 1、2/1、21、 3 2、2/2 22、 4 3、2/3 21.5、 . . と数100行のデータがありますが ロット単位(30個)で管理図1枚目、2枚目と順次、 表示したいのですが、どの様に考えればよいのでしょうか? エクセル関数だけで出来れば、ベターなのですが 簡易なVBAなら多少理解できますが よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。ご質問の意味を微妙にカン違いしているかもしれませんが、 『管理図』=グラフの事だとして、可変範囲のグラフを作成したいという意味であれば、以下。 作業エリアとしてD1:D2セルを使います。 D1:=(D2-1)*30 D2:1 [Ctrl]+[F3]の[名前定義]で 『date』=OFFSET($B$2,$D$1,,30,) 『data』=OFFSET($C$2,$D$1,,30,) グラフを作成し、その系列をクリックした時に表示される数式バーに =SERIES(Sheet1!$C$1,Sheet1!date,Sheet1!data,1) これで、D2セルに 1...2...と入力する度に範囲が切り替わります。 スクロールバーなどを配置したりすると使い易いかもしれません。 上の作業をマクロで作ると Sub sample() '可変範囲グラフ作成サンプル。1回のみの実行   Dim s As String   Dim n As Long   Dim r As Range      With ActiveSheet 'Sheets("sheet1")     s = .Name     n = WorksheetFunction.Floor(.Range("A1").End(xlDown).Row, 30)     Set r = .Range("D2")     With .ScrollBars.Add(r.Left, r.Top, r.Width, r.Height)       .Value = 0       .Min = 0       .Max = n       .SmallChange = 30       .LargeChange = 30       .LinkedCell = "D1"     End With     .Names.Add "date", "=OFFSET($B$2,$D$1,,30,)"     .Names.Add "data", "=OFFSET($C$2,$D$1,,30,)"     With .ChartObjects.Add(.Range("E1").Left, 0, 500, 300).Chart       .ChartType = xlLine       .SeriesCollection.NewSeries.FormulaR1C1 = _         "=SERIES(" & s & "!R1C3," & s & "!date," & s & "!data,1)"       .HasTitle = False     End With   End With   Set r = Nothing End Sub

acenoh
質問者

お礼

ありがとうございます。 以下のように自己解決いたしました。 Sheet1のデータベースと グラフのある管理図シートを用意 n = 何ロット目かをグラフシートのセルA1に入れた後 シート上に配置したコマンドボタン1を押し SUB コマンドボタン1() n = Sheets("管理図シート").Range("a1") ' Sheets("データシート").Select Range(Cells(30 * (n - 1) + 2, 1), Cells(30 * n + 1, 4)).Select Selection.Copy Range("AA2").Select ActiveSheet.Paste End Sub 目的のデータを データベースシートのセルAA2:AD31にコピーし そのデータをグラフシートのグラフに反映させました。 >『管理図』=グラフの事だとして、可変範囲のグラフを作成したいという >意味であれば、以下。 その通りです 早速、試させていただきます

関連するQ&A