- ベストアンサー
エクセルのグラフで横軸を最新の30個で自動更新
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>X軸は何も何もなくても良いのでこの部分だけ改良何とかお願いいたします。 過日も触れましたが、 >>期待のグラフを右クリックし、 >>データの選択を選び、 >> 表示される設定画面、凡例項目に余分な行があれば削除し >>横(項目)軸ラベルは、編集を選び >>明示的に範囲を指定したうえで、 添付のコードを実行してみてください。 今回提示したコードは X軸の内容:横(項目)軸ラベルの定義に触れないコードです。 期待通り動作すれば、 データに使う行数やデータに使う列が変化しても constの値を書き換えることで対応するハズです。 少なくとも当方の環境では期待通り動作します。 Sub GraphSauceChange7() Const MaxRows = 30 'データ範囲に指定する最大行数 Const ColNum1 = 5 '1つ目データ格納列 Const ColNum2 = 10 '2つ目データ格納列 Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 16 '項目名格納行番号 Const ShNameGD = "データ" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Dim GSh As Worksheet Dim DSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群1つ目範囲 Dim tgRange2 As Range 'データ群2つ目範囲 Dim tgRangeA As Range '上記合計範囲 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) ERow = DSh.Cells(DSh.Rows.Count, 1).End(xlUp).Row If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If MsgBox (SRow & "-" & ERow) 'デバック用確認コード Set tgRange1 = _ Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)) Set tgRange2 = _ Range(DSh.Cells(SRow, ColNum2), DSh.Cells(ERow, ColNum2)) Set tgRangeA = Union(tgRange1, tgRange2) '結合 GSh.ChartObjects(1).Chart.SetSourceData Source:=tgRangeA 'セット GSh.ChartObjects(1).Chart.SeriesCollection(1).Name = _ DSh.Cells(KoumokuRow, ColNum1).Value GSh.ChartObjects(1).Chart.SeriesCollection(2).Name = _ DSh.Cells(KoumokuRow, ColNum2).Value End Sub
その他の回答 (1)
- aokii
- ベストアンサー率23% (5210/22062)
質問内容の意味が詳細不明ですが、X軸が数字の場合への対応はX軸を数字にすれば自動的にグラフにX軸の数字が表示されるはずです。X軸が年月日になっているようでしたら、X軸の元データのセルの書式を年月日ではなく数字(標準)に変更してみて下さい。
お礼
早々のご回答ありがとうございます。 実はこれはその前の質問へのその時のご回答者様への再質問で詳細な内容が抜けています。 これまでに長いやり取りがあったので省略してしまいました。 #2で解決できました。 説明不足で申し訳ありませんでした。
お礼
今回も7個もコードを作成していただき申し訳なさと感謝の極みです。 今後必要なBookから順次改定し、末永く使わせていただきます。 今回でひな形がほぼ完成したと自負します。(ほとんどHohoPapaさんの仕事ですが) これからたまってしまった日常業務に気分よく取り掛かかれます。 Thank you again !!!!
補足
昨夜自宅でダミーシートで完璧に動くことを確認し、今朝からひな形Bookでも期待通り動くことを確認しました。 ただし、製品別のBookではやはり同じエラーが発生するのですが、昨日の試行でデータ部分のコピペで解決できることが分かっているので十分です。(むしろ構成のおかしなBookを使い続けるより同じ環境のBookにしておくメリットもあります) 後はコツコツと知恵の無い分、汗を流すことにします。 本当にありがとうございました。 追記 軸に数値(LOT No)を指定した場合はマニュアルでX軸を消しても、マクロを動かすと第3の要素(線)とX軸も再表示(復活)してしまいます。 ただし、LOT Noの列の1か所に文字が入っているとLOT Noも文字として認識して期待通りに表示されることがわかりました。 ただし、よく考えたらこの場合1個目の特性データをどうするか(1個目の実測値と同じ値を入れるとか)を考えないとだめなのでやはり#7がいいです。