2007年11月17日土曜日

第60回目 グラフ関係(その6;グラフのタイトル等を修正する及びまとめ)

○第60回目 グラフ関係(その6;グラフのタイトル等を修正する及びまとめ)

 ここで修正の対象となるのは、タイトル、最小値、最大値、目盛りの間隔、目盛りの表示桁数(これだけは文字で与えてください)です。
 考え方も簡単になります。すべてが既存のものの利用となります。
 流れは、
 0.ワークシートでタイトル等を入力する
 1.ワークシートのタイトル等を取得する
 2.グラフシートへの移動
 3.タイトル等の修正

 1.での最初にセットするカーソルの位置は、タイトルが記入されているセルです。そのセルから下に最小値等を記入しておいてください。
 セル座標の取得からセルの値の取得ですので、今まで何回もやってきたものです。
 2.シートの移動も何回か出てきました。直前にも出てきています。
 3.タイトル等の修正は、タイトル等を保管している特殊な場所に、取得した値を入れればいいのです。
 その部分は、
'タイトルの修正
  ActiveChart.ChartTitle.Text = g_title
'目盛等の修正
  ActiveChart.Axes(xlValue).MinimumScale = y_min
  ActiveChart.Axes(xlValue).MaximumScale = y_max
  ActiveChart.Axes(xlValue).MajorUnit = y_memori
  ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = y_keta
となります。(第41回"緊急講座グラフ編"の後半のところからの抜き出しです)

ということで、何の苦もなくできてしまいました。

グラフの線を太くするのは、
  ActiveChart.SeriesCollection(i).Select
  With Selection.Border
    .ColorIndex = 57    'この記述は不要です
    .Weight = xlMedium   '←太くなります。普通はxlthin
    .LineStyle = xlContinuous  'この記述は不要です
  End With
 線だけであれば、
  ActiveChart.SeriesCollection(i).Border.Weight = xlMedium
 だけでいいことになります。

 ケーススタディ別にやり方をまとめてみますと、
 
 1.グラフを作らなくては…。=⇒第41回の新規一括作成
 2.タイトルとか目盛りが気に入らないので直したい=⇒第60回(この回)
 3.これはこれでいいが、新しいグラフ(データ系列)を追加したい=⇒第58回により、グラフのデータ系列の情報をとり、これをまねて新しいデータ系列をつくる。第57回により、グラフを追加する
  4.ちょっと範囲が違ったよ、1年追加しなければならなくなった。=⇒第58回により、グラフのデータ系列の情報をとり、これを修正して正しいデータ系列をつくる。第59回により、グラフを修正する。
 5.ほかのファイルからグラフシートを張り付けたが、データ系列の参照先は前のままだ、これを直したい。=⇒同上
 6.グラフ(のデータ系列)を一つ削除したい=⇒手作業で削除。グラフ上データ系列番号がわからないので、手作業で行なうのが無難です。
 7.縦軸の標識(例えば"金額"とか)、横軸の標識説明(例えば、"年度"とか)を付けたい=⇒操作の記録でマクロをとり、自分でマクロを組んでください。(タイトルレベルのものなので簡単です)
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "たいとるタイトル"
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "年度"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "金額"
  End With
 8.10個グラフを追加したいのだが、データ系列のパラメータを作るのが面倒=⇒その通りです。例えば既存で4個グラフがあったとします。そのグラフのデータ系列の情報の取得は必ず行なうはずです。
 それを前提に。
 既存のデータ系列の情報を取得します。
 既存のデータ系列の情報を下に3セット(10個以上にするため)コピーします。4行、あき行、15行となります。
 既存のデータ系列が入った隣の2列に、修正前と後の列を入力します。
 (新しいデータ系列は、ほとんどの場合、既存のものの列を置き換えるだけでいいと思われます)
   既存のもの…データ系列としてH,I,J,K列を使用。
   新しいもの…データ系列としてS,T,U,W列を使用したい。
   H⇒S、I⇒T、J⇒U、K⇒Wに置き換える。
 4行単位で、複数個の置換えを行います。これはマクロです。
 (既存のデータ系列での列が四種類しかないため、一気にはできません)
 3回繰り返すと、お望みのデータ系列のパラメータができます。
 この"複数個置換えマクロ"は、すでに、"第54回目 ちょっとした小物、その他編"で紹介しておいたような気がしたのですが…、
 紹介していませんでした。どこかで紹介していなかったか…

 ありました、モドキがありました。第20回の後半に本題のマクロをフォローするマクロとして、複数個置換えマクロがありました。
 今回の場合は、置換え前後の文字列は、セルに入力されていますので、範囲を取得して、置換え前後の文字列をセットすればいいと思います。
 セル範囲を取得して、セルの内容を変数にセットする、よく使われる機能です。
 これを第20回のマクロの頭につければいいでしょう。
 修正するのは表札とデータ値の座標ですので、1行で3箇所、4行で12箇所。マクロの方がはるかに早いと思います。
 
 何を書いていたのか忘れてしまいました。
 グラフ編のケーススタディでした。

 9.グラフにコメントを入れてくれ=⇒現状では手作業となりますが、分析してみる価値がありますね。

 10.精査したら数字が変わったって…。新しいファイルが送られてきた。これでグラフを作り直してくれってことだ=⇒既存のファイルからグラフシートをコピーします。あとは5.と同じです。
 11.複合グラフ(目盛りが二つあるもの)はできないか=⇒業務上ニーズがあったら考えます。
 12.折れ線グラフ以外のグラフも作るんだが…=⇒折れ線グラフでまずつくって、適当なところで手作業でグラフの種類を変換する。100%の対応ではないですが…。
 13.0から始まらないようなグラフがあるんだが=⇒最小値の設定の仕方で対応できます。
 14.例えば五年ごとに縦線が引けないか=⇒エクセルの機能そのものにないようです。一定の間隔での縦線はそれほどの必要はないと思いますが、特定のところに線を引くというニーズはあるかもしれません。その場合は図形ということになりますので、9.のコメントと同じとなります。
 15.階段型グラフが出来ないか=⇒昔(5年前)そのことを仲間にいったところ、そんなことは出来ませんということでした。モドキでも出来ないのかといったところ、かなりの剣幕で出来ないの一点張りでした。少し考えたらアイデアが出たのでそれをいったら沈黙に包まれました。それは折れ線グラフを工夫して使ったものでした。
 しかしながら、その当時でもできる方法はあったようです。ピボットグラフでできるのです。ということで、ピボットグラフには関心があるので、ピボットグラフを研究したいと思います。

 16.データ系列のソートできないか=⇒折れ線グラフで何のメリットがあるのでしょうか。不明です。なんかしらで順番が変わってしまった複数のグラフのデータ系列をそろえるというニーズはありますね。確かに。そのときは、グラフデータ系列の取得し、ワークシート上で順番を変えて(統一して)、それでグラフを修正するというのではどうでしょうか。既存の機能で大丈夫です。ソートの仕方はソートキーを追加すれば、既存のエクセル機能で簡単です。
 17.グラフを使って何か図がかけないか=⇒趣旨が意味不明です。階段状のグラフも同じようなことが含まれているのかもしれません。マクロでデータ系列の数値を動かして、グラフを変化させるなども含まれると見ます。中期的な研究課題ですね。面白いところがあるかもしれないという感じがしますが。
 18.グラフシートでグラフを越えた書類が出来ないか=⇒かなりマニアックになってきました。頭がどうなっているのかと聞きたい感じがします。確かに今まではグラフにコメントをつける程度でしたが、文書の中にグラフがある、それじゃワークシートにグラフを張り付ければそうなってしまう。意味不明ながら何かがあるかもしれません。頭にしまっておきます。
 19.グラフ管理用のワークシートができないか=⇒できると思います。一ファイルに多くのグラフが存在すると、管理のしがいがあるでしょうね。
 20.グラフのデータ系列の取得で、表札は座標だけでなく、内容も表示すべきではないか=⇒表札があれば、わかりやすくなりますので、19.とあわせて取り入れてみます。

0 件のコメント: