- ベストアンサー
エクセルデータベースからグラフ作成
お伺いいたします。 ある強度の管理図を作成したいのですが 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なら多少理解できますが よろしくお願い致します。
- みんなの回答 (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
お礼
ありがとうございます。 以下のように自己解決いたしました。 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にコピーし そのデータをグラフシートのグラフに反映させました。 >『管理図』=グラフの事だとして、可変範囲のグラフを作成したいという >意味であれば、以下。 その通りです 早速、試させていただきます