• ベストアンサー

エクセルのグラフで横軸を最新の30個で自動更新

HohoPapaさん 何度もしつこくて、くどくてすみませんがあと1つだけお願いします。 うまく動くBookに品種別Bookのデータをコピペして、必要な細工を再構築して一応目的のBookが完成しましたが、先ほどの質問のお礼欄にコメントしましたようにX軸が数字の場合への対応がどうしても必要です。あるいはX軸の指定を抜く。 試しにX軸に関係しそうなコード(Column0)を1行づつ削除してみましたが駄目でした。 X軸は何も何もなくても良いのでこの部分だけ改良何とかお願いいたします。 グラフ化は何とか完成させたいのであと一息何卒よろしくお願いします。 先程の質問は締め切らせてもらいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.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

akira0723
質問者

お礼

今回も7個もコードを作成していただき申し訳なさと感謝の極みです。 今後必要なBookから順次改定し、末永く使わせていただきます。 今回でひな形がほぼ完成したと自負します。(ほとんどHohoPapaさんの仕事ですが) これからたまってしまった日常業務に気分よく取り掛かかれます。 Thank you again !!!!

akira0723
質問者

補足

昨夜自宅でダミーシートで完璧に動くことを確認し、今朝からひな形Bookでも期待通り動くことを確認しました。 ただし、製品別のBookではやはり同じエラーが発生するのですが、昨日の試行でデータ部分のコピペで解決できることが分かっているので十分です。(むしろ構成のおかしなBookを使い続けるより同じ環境のBookにしておくメリットもあります) 後はコツコツと知恵の無い分、汗を流すことにします。 本当にありがとうございました。 追記 軸に数値(LOT No)を指定した場合はマニュアルでX軸を消しても、マクロを動かすと第3の要素(線)とX軸も再表示(復活)してしまいます。 ただし、LOT Noの列の1か所に文字が入っているとLOT Noも文字として認識して期待通りに表示されることがわかりました。 ただし、よく考えたらこの場合1個目の特性データをどうするか(1個目の実測値と同じ値を入れるとか)を考えないとだめなのでやはり#7がいいです。

その他の回答 (1)

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

質問内容の意味が詳細不明ですが、X軸が数字の場合への対応はX軸を数字にすれば自動的にグラフにX軸の数字が表示されるはずです。X軸が年月日になっているようでしたら、X軸の元データのセルの書式を年月日ではなく数字(標準)に変更してみて下さい。

akira0723
質問者

お礼

早々のご回答ありがとうございます。 実はこれはその前の質問へのその時のご回答者様への再質問で詳細な内容が抜けています。 これまでに長いやり取りがあったので省略してしまいました。 #2で解決できました。 説明不足で申し訳ありませんでした。

関連するQ&A

  • エクセルのグラフで横軸を最新の30個で自動更新

    HohoPapaさん いつもお世話になっております。 さて前日下記のコードを教わって随時他のBookにも展開中です。 非常に使いやすく汎用で助かっているのですが、当初からある程度想定された問題が発生しました。 当然あり得るケースとしてグラフ要素が1つしかない場合です。 本日上記のケース(1列以外は5以下、10以上、合格、・・・)が出てきました。 おそらく同じ列を入れればグラフの見た目は1本にできると思っていたのですが、何ともならず。 今更ですが、お恥ずかしい限りで申し訳ありませんがグラフ要素1つの場合の対応をお願いできませんでしょうか? 文字列を指定するとX軸に表示されるようです。(値0のグラフではなくX軸に文字が表示されます) 両方兼用だと複雑になるようなら、別のコード(このコードから数行省略?)でもOKですので何卒よろしくお願いいたします。(レアケースなので使い分けは全く問題なし) 8回目の改良になってしまい本当にすみません。 HohoPapaさんの想定外の低レベル(すでにお気づきかと思いますが・・)ですみません。 Sub GraphSauceChange7() Sheets("成績表").Select ActiveSheet.Unprotect Const MaxRows = 50 'データ範囲に指定する最大行数 Const ColNum1 = 4 '1つ目データ格納列 Const ColNum2 = 6 '2つ目データ格納列 Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 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 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

  • EXCEL2000 グラフ内の表示を自動で更新させるには?

    EXCEL2000のグラフの作成で困っています。 X軸に月、Y軸にミス数、それを個人別、各月ごとに集計した簡単なグラフなのですが、このグラフ内のX軸の表示を4月の時点であれば、X軸左側は4月、5月になればX軸左側は5月に自動的に更新されるようなグラフにするにはどういったことをすればよいのかがわかりません。 複数のグラフにまたがることなく、年度の推移を常に見ながら昨年度実績と今年度の実績の差異をすぐに把握できるようにしたいため、上記のような処理が必要となりました。 ご教示お願いいたします。。

  • excelのグラフについて質問です。

    excelのグラフについて教えてください。 当方、EXCELは2000、OSはXPです。 商品名と件数のグラフがあるとします。 (A列に商品名、B列に件数) X軸に商品名、Y軸に件数を配して、棒線グラフにします。件数のY軸はグラフの左側です。 その上で、右側Y軸にパーセントの項目を作り、先程作った棒の隣に、全体の件数に対する割合を、違う色の棒で表示させたいのです。 これなら、件数の隣にパーセント計算の行を作って、その範囲を取り込み、複合グラフで作れるのですが…。 見せてもらった資料では、パーセントのセル無しで、そのグラフを完成させているようなのです。(わかりますでしょうか? こう、グラフ上で計算させているような…) そんな事は可能なのでしょうか? わかりにくい質問ですみません。宜しくお願いします。

  • エクセル・グラフ作成の横軸の合わせ方

    タイトルから分かり辛くてすいません。 以下の場合どうすれば良いのでしょうか? ある物の値を0, 15, 30, 45, 60分目で計測したとします。 その後は15分刻みで測る必要がないので、2,3,4時間目で計測します。 このデータから折れ線グラフを作成する場合、 X軸を『0, 0.25, 0.5, 0.75, 1, 2, 3, 4』とすると、全て等間隔になってしまいます。 『…1, 1.25, 1.5, 1.75, 2…』としてみても間の値が無いので、 1時間目以降ただのプロットになってしまいます。 この場合、どうすれば綺麗な折れ線グラフになるのでしょうか? よろしくお願いします。

  • エクセルのグラフの横軸をデータ数で自動化

    いつもいつも大変お世話になっております。 先日の質問時に具体的な表を添付しなかったために非常にお手間をおかけすることになってしまったので改めて具体的な表を添付して再度質問させていただきます。 左のボタンをクリックするとグラフが更新されて成績表の印刷ダイアログが表示されるようにしたいのです。(実際にはSheet2に作成されたグラフを確認してからマクロボタンでLOT Noをファイル名とした成績表がpdfで保存された後印刷することになります) グラフは品種によってはデータ数20個、30個、最大50個程度の最新のデータの動きを確認したいのです。 グラフ化の要素は品種により特性列を任意に2個選択したい。 実際にはこのブックにはHohoPapaさんに教わった保存時の入力済みセルの自動保護マクロ、pdf保存と印刷マクロ等が複数組み込まれていますのでこれとのバッティングも懸念されます。 (今回最初にグラフ作成マクロが動かなかった原因はこれでしたが、マクロの1行目に保護解除コードを1行入れたら解決) 前の質問の#1のご回答でデータ数が指定の個数より足りないケースでグラフ対象セルが上に突き抜けなければほぼ完ぺきなのですが。 何とかなりそうなら何卒よろしくお願いいたします。 (うまくグラフが添付されますように・・・)

  • グラフ

    お世話になります。 VB.net 2008の勉強をしております。 色々調べましたが、解決できないので教えて頂ければ幸いです。 商品の月別の売り上げを作成しておりますが、2012/04を始点(X軸)にして 表示をさせたいと思っておりますが、出来たグラフは何故か、1カラム(?)空いた 状態で表示されてしまいます。 どうすれば、2012/04の軸をX軸の開始にできるのでしょうか? ご意見を頂ければ幸いです。 よろしくお願い致します。

  • 4次多項式のグラフ

    4次多項式のグラフをEXCELで書く問題で困っています。 式と完成したグラフはあるのですが、なぜこのグラフになるのか分かりません。 式:F(t)=t^4/4-2*t^3+11*t^2/3-6*t グラフ:y軸が-100~900まで100目盛りづつ、x軸は0~10まで1目盛りづつ グラフにはF(t)とf(t)、2つのグラフがあります。 F(t)は式が与えられているのでなぜこのグラフになるのか理解できますが、f(t)は式もないしなぜこのグラフになるのかわかりません。 f(t)はF(t)のy軸と同じ値(0)から始まりy軸の200辺りで収まっています。 F(t)を計算すると F(t) x軸 0→y軸 0 x軸 1→y軸 -4.0833 x軸 2→y軸 -9.3333 x軸 3→y軸 -18.75 x軸 4→y軸 -29.333 x軸 5→y軸 -32.083 x軸 6→y軸 -12 x軸 7→y軸 51.916 x軸 8→y軸 186.66 x軸 9→y軸 425.25 x軸10→y軸 806.66 になります。 数学は得意ではないので説明が分かりにくいですが、よろしくお願いいたします。

  • エクセルでのグラフについて

    エクセルで折れ線グラフを作成した際に、 ゼロが数値に入ってるとX軸上にプロットされますね? で、ここから質問なのですが、 グラフが下に落ちるときに 真下に落ちてから右にプロットされる場合と 右下に落ちていく場合があるのですが、 何が違ってるのでしょうか? 真下に落ちるような折れ線グラフを作成したいのですが、 どうすればいいのかがわかりません。 教えてください。 よろしくお願いします。

  • Excelグラフでx軸の幅を変えたいのですが・・・

    Excelのグラフのついてお尋ねします。 例えば、以下の表を散布図にしました。 x軸;0.01     0.02     0.03    1     3     7   ・・・10  ・・・・30 となったとき、それぞれに対応するのが y軸;100     200     300     400     500     600   ・・700  ・・・800 となったとします。 これを散布図で作るとx軸が0.01~0.03までの間のグラフが詰まっててよく見えません。これはx軸の最大値が30であるので比率的にx軸の0.01などは幅が狭くなってしまう現象だと思われますが、ここで、この詰まっている部分をちゃんと見えるようにx軸の幅を変えてはっきりと表示させたいのです。そうなるとグラフがとても横長になってしまうかもしれませんが、いくら横長になってもかまわないのでこの部分をはっきりと表示できる方法はありませんか?初歩的な質問なのかもしれませんが・・よろしくお願いいたします!

  • エクセル2010/2つ並べた積み上げ棒グラフで

    【2つ横に並べた積み上げ棒グラフで】 エクセル2010を使ってグラフを作成しています。 こちらのサイトを参考に↓ http://hamachan.info/win7/Excel/tumigraph.html 積み上げ棒グラフを2つ横に並べたグラフをつくりました。 そこで、例えば、上記サイトの最後の完成したグラフで 各月の2012年のものだけ、縦軸を第二軸に設定するには どうすればよいでしょうか。 仕事で至急必要です。 申し訳ございませんが、どうかご教授下さいます様 何卒宜しくお願いいたします。

専門家に質問してみよう