[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『グラフ作成』(ちぃさん)
お世話になります。
[[20150628122225]]
コチラに関係した質問内容になります。
sheet1
___A___ ___B___ ___C___ 1 -999.99 7.99 2 -999.99 7.89 . . . . . . 2546 7.88 6.82 2547 7.01 2548 6.09 2549 6.81 2550 6.82 2551 -999.99
グラフのデーダーを拾う範囲は予め設定しておきC列のデーター値をグラフ表示さてたいです。
C列のデーターのある最終行は毎回おなじ所ではなくてもグラフに反映さすデーターの選択範囲をさわることなく1行から最終行までのデーターを拾いたいのですがなにか手立ては有りますでしょうか?
質問内容がわかりにくいようでしたら指摘ください。
どうぞ宜しくお願いいたします。
< 使用 Excel:Excel2003、使用 OS:WindowsXP >
C列 数式ありのデータ範囲でグラフ化。
C列オートフィルタで空白以外で絞込み。
で、いいんでないの?
※見出しあったほうがいいね。 (GobGob) 2015/07/01(水) 09:04 ⇒ 9:12 訂正
グラフのSetSourceDataのうち、行末の数字部分をマクロで変えれば良いです。
意味が判らなければ、マクロの自動記録を使い、手動でグラフの範囲を変えてみてください。必要な命令は、それで記録されますので。
行末を得る方法は、Cells(Rows.Count, "A").End(xlUp).Row のようにするのがすっきり実現できてお薦めです。
(???) 2015/07/01(水) 09:07
> C列 数式ありのデータ範囲でグラフ化。
どういうことでしょうか?
理解できず申し訳ありません。
> C列オートフィルタで空白以外で絞込み。
後出し的で申し訳ないのですが、もしC列以外にもデーターがある場合でしたらどうすればいいでしょうか?
例えば
sheet1
___A___ ___B___ ___C___ ___E___ ___D___ 1 -999.99 7.99 -999.99 7.99 2 -999.99 7.89 -999.99 7.89 3 . . . . . . . . .
C列とは別にD列にもデーターがあったとして、どちらのデーターもグラフ表示させたいけどデーターのある最終行が違う場合。
このような場合はどのようにすればいいでしょうか?
(???)さん ありがとうございます。
非常に読み辛く申し訳ありません。
>グラフのSetSourceDataのうち、行末の数字部分をマクロで変えれば良いです。
>意味が判らなければ、マクロの自動記録を使い、手動でグラフの範囲を変えてみてください。
挑戦してみます。
ありがとうございます。
(ちぃさん) 2015/07/01(水) 09:56
マクロ記録でデーター選択範囲をみて見たのですがやはり分からないです。
関数でC列の最終行の位置がわかるようになったのですが、やはりグラフにはデーター範囲を設定することが難しいです。
ちなみに
=MAX(INDEX((C:C<>"")*ROW(C:C),))
で最終行を獲得しているのですが。。。。
グラフのデーター選択範囲の所にどのようにすれば毎回かわる最終行を獲得できるでしょうか?
どうぞ宜しくお願い致します。
(ちぃさん) 2015/07/01(水) 11:51
はい、数式はそれでもOKです。どこかのセルにそれが格納されているならば、VBAからはRangeで値を得るだけですね。 この式を書いたのは、どのセルですか?
同じ事をマクロで実現するのが、先に私が Cells(…) と書いたコードです。
まず、現状のグラフを右クリックし、「データソースの選択」画面を確認してください。データの範囲はどうなっていますか?
ここに書かれているセル範囲を文字列扱いし、末尾行を書き換えれば良いだけですよ。例えば、以下の感じ。
似たコードが、マクロの自動記録で生成されませんでしたか?
ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SetSourceData Source:=ActiveSheet.Range("A1:" & Cells(Range("Z1"), "C").Address) (???) 2015/07/01(水) 15:07
' Macro4 Macro
'
'
ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Range("C1:C14") End Sub
すみません。
マクロの記録はこのような感じでした。
私が間違っていると思うのですが(汗)
(ちぃさん) 2015/07/01(水) 15:54
連続すみません。
>まず、現状のグラフを右クリックし、「データソースの選択」画面を確認してください。データの範囲はどうなっていますか?
=Sheet3!$C$1:$C$14
となってます。
>ここに書かれているセル範囲を文字列扱いし、末尾行を書き換えれば良いだけですよ。
(???)さんが書かれていた
>行末を得る方法は、Cells(Rows.Count, "A").End(xlUp).Row のようにするのがすっきり実現できてお薦めです。
に置き換えるのですか?
(ちぃさん) 2015/07/01(水) 16:09
>はい、数式はそれでもOKです。どこかのセルにそれが格納されているならば、
仮にですが現在 「E10」に獲得した最下行を表示させております。
「E10」に検出されているのは「21」です。
当たり前かもしれないですが
Sub Macro4()
'
' Macro4 Macro
'
'
ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SetSourceData Source:=Range("C1:E10") End Sub
でマクロを動かすとデーター範囲が「=Sheet3!$C$1:$E$10」となりグラフも新たに作成されてしまいます。
どのようにすればいいでしょうか?
すみませんがお助け頂けないでしょうか。
宜しくお願いいたします。
(ちぃさん) 2015/07/01(水) 16:42
先の例では、Range("Z1") に最終行数を得る数式が書かれていることを前提としています。E10ならば、以下。
ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SetSourceData Source:=ActiveSheet.Range("C1:" & Cells(Range("E10"), "C").Address)
それとも、式なんて入れたくない!、という事ならば、この部分を Cells(Rows.Count, "C").End(xlUp).Row としてください。
シート選択部分を省略して書いているので、標準モジュールにマクロ記述する場合は、シート名も指定してください。
(データが増える度に使うので、シートにActiveXのボタンを貼って、これを押したときに動作させるのをお薦め。これならシートモジュールになります)
(???) 2015/07/01(水) 16:50
いけました。
因みに
>それとも、式なんて入れたくない!、という事ならば、この部分を Cells(Rows.Count, "C").End(xlUp).Row としてください。
コレは
Sub test2()
ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.SetSourceData Source:=ActiveSheet.Range("C1:" & Cells(Rows.Count, "C").End(xlUp).Row), "C").Address)
End Sub
ではダメなのですか?
構文エラーが出ます。(泣)
どれが余分なのでしょうか?
度々申し訳ないです。
お助け頂けないでしょうか。
宜しくお願いいたします。
(ちぃさん) 2015/07/01(水) 17:39
ActiveChart.SetSourceData Source:=ActiveSheet.Range("C1:" & Cells(Cells(Rows.Count, "C").End(xlUp).Row, "C").Address) (???) 2015/07/01(水) 17:52
>よ〜く眺めれば判りそうですが…。(こういう作業をデバッグと言い、自分自身でやるべき作業です)
申し訳ございません。
ありがとうございます。
すみません。
考えてもわからないのですが(汗)
別のシートにグラフをもっていくと何故か「C1」しか選択されないのですが(汗)
現在は
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("C1:" & Cells(Cells(Rows.Count, "C").End(xlUp).Row, "C").Address)
としています。
Sheets の前に With を付けるとコンパイルエラーが出ます。
別のシートを選択するから With が必要とおもっていたのですが違うみたいなのですが。
>標準モジュールにマクロ記述する場合は、シート名も指定してください。
マクロの記録で確認すると
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("C1:C22") このような感じなのですが。
何が足りていないのでしょうか。
度々申し訳ありません。
教えていただけないでょうか。
宜しくお願い致します。
(ちぃさん) 2015/07/01(水) 19:11
Cellsの前でもシートを指定する必要があります
With Sheets("Sheet3") ActiveChart.SetSourceData Source:=.Range("C1:" & .Cells(Rows.Count, "C").End(xlUp).Address) End With
とか、
With Sheets("Sheet3") ActiveChart.SetSourceData Source:=.Range("C1", .Cells(Rows.Count, "C").End(xlUp)) End With
あと、実行時にグラフが選択されていないとエラーになりますので注意してください。
(マナ) 2015/07/01(水) 19:54
シート指定をしているつもりでしたが場所が間違っていたという事で恥ずかしいです。
すみません。
有り難うございました。
(ちぃさん) 2015/07/01(水) 20:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.