[[20170607181951]] 『エクセルグラフの軸の種類をテキスト軸(T)に設秩x(skyblue) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルグラフの軸の種類をテキスト軸(T)に設定』(skyblue)

 またも、株価チャートの問題です。

・横軸において、軸の種類にはデフォルトで「データを基準に自動で設定(Y)」が設定されています。

・株価では横軸に日付が入るので、デフォルトでは土日休祭日の株式市場が無い場合(データが無い)、ろうそくが描かれず空白となってしまいます。
これが邪魔です。

・この空白を無くすには「軸の種類」を「テキスト軸(T)」にしなければなりません。

 これもエクセル2010ならマクロ記録で確認できるのかもしれませんが、エクセル2016ではマクロ記録が残りません。

 ニッチなテーマで申し訳ありませんが、横軸の「軸の種類」を「テキスト軸(T)」に設定するマクロを教えて下さい。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


株価チャートは使った事が無いのですが、マクロならば軸のプロパティで、 .TickLabels.NumberFormatLocal = "@" とすると文字列形式になりますが、そういう事でしょうか?
(???) 2017/06/08(木) 13:29

 株式市場は平日に開いていますが、土日休祭日には閉じていて、取引データが有りません。

例えば日経225のデータは次のようになります。

日付 始値 高値 安値 終値 出来高
2006/7/18 14680 14715 14400 14400 22345
2006/7/19 14500 14650 14465 14560 20646
2006/7/20 14860 14975 14780 14975 17398
2006/7/21 14840 14875 14790 14820 14689
2006/7/24 14685 14870 14560 14775 22641
2006/7/25 15000 15100 14985 15045 16990
2006/7/26 15110 15125 14865 14870 19647
2006/7/27 14910 15240 14840 15205 25677
2006/7/28 15230 15380 15155 15350 26043
2006/7/31 15525 15550 15415 15415 20855

7月21日から24日までデータが飛びます。
しかし、株価チャートの下部にある横軸において、デフォルトでは「軸の種類」が「データを基準に自動で設定(Y)」となっており、この場合は、22,23日のデータが無くても、横軸は22,23日のスペースをとるので、そこが空白となります。

「軸の種類」を「テキスト軸(T)」に設定すると、22,23日は追加されず、グラフ表示が繋がります。

●ご質問のように文字化するとこのような問題は解決する可能性が有りますが、実は、株価チャートに移動平均のグラフを追加する際、シリアル化した日時のデータを使うため、シリアル値を使えるかどうかの問題を解決しなくてはなりません。
時間を頂いて試さないと正確には回答できません。

(skyblue) 2017/06/08(木) 14:48


???さん

文字形式化の

.TickLabels.NumberFormat = "@"

は次のようなスクリプトにして挿入するのでしょうか?
軸のプロパティのマクロは分かっておりません。

    With ActiveChart.Axes(Type:=xlValue)
        .TickLabels.NumberFormat = "@"
    End With

この方法で試したところではデータの無い日時の空白を作らないという目的は果たせていません。

(skyblue) 2017/06/08(木) 17:17


表示書式を変えただけでは駄目でしたね。
Excel2010でマクロの自動記録を試したところ、以下のコードになりました。お試しください。
    ActiveChart.Axes(xlCategory).Select
    ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale
(???) 2017/06/08(木) 17:44

???さん

  色々試して返事が遅れました。
ご指導頂いた

    ActiveChart.Axes(xlCategory).Select
    ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale

は日付のテキスト化が出来、土日休祭日の空白が無くなり、簡単で良い方法であることが分かりました。

 ただし、移動平均線を追加するので横軸の開始点を右側にずらす必要があり、例えば25データの移動平均線は始点から25番目のデータまでは存在しないので、25番目のデータまで始点を右にずらせたいのです。
日付値がシリアルである場合は横軸の最小点を25番目の日付に指定できますが、テキストになると指定が出来ません。

 結論として、
1.シリアル値のままで、
2.横軸に関して(操作では横軸で右クリックで軸書式設定をクリック)
3.軸の種類 で
4、テキスト軸 を選択
・・という方法が最も簡単な事が分かりました。

以上の操作はエクセル2016のマクロ記録では記述されません。
もし、テキスト軸 の選択のマクロがおわかりでしたら、教えて下さい。

(skyblue) 2017/06/09(金) 13:01


「軸の種類」を「テキスト軸」にすると日付指定ができない、うーん困ったゾ・・・で止まるようじゃ頭が固杉内ですゾ。

逆に考えれば「軸の種類」が「データを基準に自動で設定」なら日付指定できるんだから日付指定のときだけ戻せばいいじゃんアゼルバイジャン
デフォルトが「テキスト軸」(ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale)として


ActiveChart.Axes(xlCategory).CategoryType = xlAutomaticScale '「データを基準に自動で設定」に戻す

DoEvents 'PCに一休みさせる。マクロの速度に処理が追いつかない可能性がある、というかテスト時になったので推奨

'日付指定やらの処理

DoEvents '同上

ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale '再び「テキスト軸」へ


ダメならまたなんか考えますゾ。

(池沼) 2017/06/09(金) 15:17


池沼さん 有難うございます

 説明が十分ではなかったのですが、

1.チャート作成、移動平均の追加などの処理はシリアル値で実施できます
  この時点では空白が出来ている以外はOKです。

2.空白を削除する最後の処理が テキスト軸 の選択になります。

教えて頂いた

ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale

で「テキスト軸」の選択が出来るのであれば、これで完成です。

 試すのでお時間をください。

(skyblue) 2017/06/09(金) 18:57


池沼さん ご指導と良い情報を有難うございました。

 お陰様で成功しました。

1.シリアル値の状態で株価チャートを作成

2.シリアル値の状態で移動平均グラフを追加

3.シリアル値の状態で移動平均の値が無い部分をグラフから削除するため横軸の最小値を指定

4.横軸をテキスト軸に指定(最後にテキスト化した場合は、空白が除去されるだけで、シリアル値で処理したグラフは維持される)

・・で目的のグラフが出来ました。

(skyblue) 2017/06/09(金) 19:15


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.