• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA(excel)でグラフのデータ範囲の取得)

VBA(excel)でグラフのデータ範囲を取得する方法

keithinの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

>グラフの現在のデータ範囲の矩形範囲 あなたが作成しようとしているグラフは確かに矩形範囲ですが、エクセルでは飛び飛びのセル範囲からも、また系列ごとに個数が違うグラフも描けますので、「全体としての元データ範囲」を取得する方法はありません。 とりあえず簡単には activechart.seriescollection.count と ubound(activechart.seriescollection(1).xvalues) end sub といったところと思います。

tsumuji
質問者

お礼

早速のご回答を  どうも 有難うございます。 やはり、結構、難解にならざるを得ないのですね・・・ 私の頭で理解するのに時間がかかりそうなので コードを勉強させていただきますね。

関連するQ&A

  • Excel:指定したデータ範囲を可変的に取得する方法。

    Excel:指定したデータ範囲を可変的に取得する方法。 現在、個人の労働時間の昨年度と今年度を月ごとに比較するグラフを作っています。 一人ひとりのグラフを新規シートに追加していくのですが、人数が多いのでこれをマクロに したいのです。 【sheet1の表(元データ)】 (A) (B) (C) (D) (E) (F) (G) (P) (1)      1月  2月  3月  4月・・・12月 (2) 1 社員A 20期 20 15.5 22.75 12 27.2 (3)    21期 12 12 26 10 13 (4) 2 社員B 20期 : : : : : (5)    21期 (6) 3 社員C 20期 (7)    21期 (8) 4 社員D 20期      21期 : : 【作りたいマクロ】 例)A2のセル[1]を選択して実行すると、社員Aのデータ範囲(B2~P3までと一行目の月単位行)を グラフ化し、新規シートに追加する。 ・上記例を他社員のデータ範囲にも使えるようにデータ範囲を可変的にしたい。 ・できればそのマクロをボタン化して、A列にそれぞれボタンを挿入したい。 ※A4[2]セルのボタンを押すと、社員Bのグラフが作成される。 下記にわかるところまでのコードを記します。(vba初心者で拙いコードですがお許しください) Sub Macro1() Range(Cells(1, 2), Cells(1, 18)).Select '1月~月平均の列 Range(Cells(2, 2), Cells(3, 18)).Select 'グラフ化する範囲 Cells(2, 2).Activate ActiveSheet.Shapes.AddChart.Select 'グラフ追加 'グラフデータの範囲設定 ActiveChart.SetSourceData Source:=Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1, 2), Worksheets("Sheet1").Cells(1, 18)) ActiveChart.SetSourceData Source:=Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(2, 2), Worksheets("Sheet1").Cells(3, 18)) ActiveChart.ChartType = xlColumnClustered ActiveChart.ApplyLayout (5) ActiveChart.Location Where:=xlLocationAsNewSheet, name:="グラフ" ActiveSheet.Move after:=Worksheets("Sheet1") Sheets("Sheet1").Select End Sub 上記のコードだと範囲指定しているため社員Aのグラフしか作成できません。 範囲を可変的にするために変数を使おうと考えているのですが、 どのように書いてよいのか混乱してしまって・・・ 皆様にご教授願いたいと思いましてこちらに質問させていただきました。 長文および読み辛くなってしまい申し訳ありません。 どうかよろしくお願いいたします。

  • VBAでグラフ作成

    過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(\"J11:M35\"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。

  • VBAでグラフ作成

    過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets("sheet1").Range("J11:M35"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。

  • Excel VBAでグラフの可変データ範囲の取得方法

    Excel2003を使用しています。 ExcelのVBAでグラフ作成のマクロを作る際に、 取得するデータの行数が可変だった場合にどうすればいいのか知りたいです。 現在は取得するデータの範囲を以下の様に取ってきています。 ActiveChart.SetSourceData Source:=Sheets("シート名").Range("B1:C5000"), PlotBy:=xlColumns ここで、データの範囲("B1:C5000")が可変だった場合のデータ範囲の取得方法を知りたいです。 例えば、("B1:C7000")や("B1:C10000")など。 具体的には"B1"のセルを選択して、 [Ctrl & Shift]を押しながら "→"、"↓" と操作を行なったときに選択される範囲をグラフのデータとして使用したいです。 途中、空白セルはない前提でかまいません。 データの終端を取得する「Endプロパティ」なるものが存在するようですが、 これを使用するのでしょうか? それとも別の方法があるのか・・・? 宜しくお願いします。

  • グラフの範囲指定をVBAで可変にしたい

    1シートに複数のグラフがあり、値を入れて完成させているファイルがあります。 データ範囲が毎回違うため、いちいちグラフを選択し、範囲を変更しています。 系列:行 データ範囲:A列から~H列までだったり、A列からJ列までだったりします データがH列までの場合はI列は値が入っていませんが、L列からまた他のグラフのデータ範囲になっているという形です。 データが始まる位置はすべて固定です。 シートにある複数のグラフを一度に変更したいのですが、どのようにしたら良いのでしょうか? (選択しているグラフのグラフ変更ではなく、選択していないものも変更したい) 以下のようなマクロを仮で組んでみたのですが、うまく動きません。 よろしくお願いします。 Sub グラフ範囲変更() Dim lastcolumn As Integer lastcolumn = Range("A2").End(xlToRight).Column ActiveChart.SetSourceData Source:=Range(Cells(1, 1), Cells(1, lastcolumn)) End Sub

  • エクセルVBAでグラフの範囲を設定する方法

    お世話になっています。 グラフ自体は、作成済みのものを使用して、データの範囲だけを 変更させる方法を考えています。 A列に、データが入っている範囲を選択して、選択したセル範囲を グラフのデータ範囲としたいと思います。 現在、作成したプログラムは以下のものです。 当たり前なんでしょうが、以下のものではエラーになります。 Loopコマンドで、アクティブになったセルをグラフのデータ範囲に 設定する方法を教えてください。 よろしくお願いします。 Sub グラフ作成() ' Dim 範囲 As String Range("A1").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Activate Loop ActiveCell.Offset(-1, 0).Activate Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlUp)).Select   範囲 = ActiveCell ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SetSourceData Source:=Range(範囲) End Sub

  • 2本ある折れ線グラフの範囲をVBAで更新したい

    2本ある折れ線グラフの範囲をVBAで更新したいと考えております。 excel2003を使っています。 グラフ1の中に系統がひとつなら以下の内容でうまくいきますが、2本ある場合どうすれば 良いか分からず困っております。 Sub サンプル() Dim myPicture As StdPicture Dim buf As String Dim myR With Worksheets("Sheet1") myR = Application.WorksheetFunction.Count(Worksheets("Sheet1").Range("A5:A100")) End With row1 = "5" row2 = myR col1 = "A" Sheets("Sheet2").Activate ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(col1 & row1 & ":" & col1 & row2 + 4), PlotBy:=xlColumns End Sub 系統を増やした場合の書き方をどなたかお教え頂けませんか。 どうぞ、よろしくお願い致します。

  • グラフ可変範囲のデータ設定

    環境Excel2002です グラフ 1が棒グラフ2個、折れ線グラフ1個で作成されています Sheets("支社")に8支社のデータがあります グラフシートは1Sheetにしたいので グラフシートで支社を選択することにより Sheets("支社")の該当支社のグラフデータを取得します そうすると、グラフデータは可変範囲で設定することになります そのVBAが下記です ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Select With ActiveChart.SeriesCollection(1) .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) .Values = Sheets("支社").Range(Cells(497, i + 1), Cells(497, i + 12)) End With .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) のところで実行時エラー1004がでてしまいます エラー回避方法を教えてください

  • VBA 選択しているデータでグラフを書きたい

    自分で選択している範囲を使ってグラフを書きたいのですが、 以下のコードに何と書けばよいのでしょうか? Selection.Addressと書くとエラーが出ます。 ActiveChart.SetSourceData Source:=”選択しているデータを使用する”

  • グラフ作成

    グラフ作成のマクロを作りたくて、マクロの記憶を用いて試してみたのですが、うまくいかないので、もしよろしければおしえてください。 選択範囲をアルファベットを用いたものではなく、cells(k,i)で表したいと思っています。 <マクロ> Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("元データ").Range( _ "A1:B1,A927:B987,Y1:Z1,Y927:Z987"), PlotBy:=xlColumns ’←このグラフ範囲をcells(,)の形式にしたい。 ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" どうぞよろしくお願いします。