- ベストアンサー
EXCELグラフの最大値最小値
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
肝心の数字は多分生数字じゃなさそうに思います。 手順: シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) with activesheet.chartobjects(1).chart.axes(xlvalue) .maximumscale = range("C2").value .minimumscale = range("C6").value end with end sub ふつーにシートを使うと、勝手にグラフに反映する。 #実はシートにグラフが沢山あるときは、どのグラフでどのセルを使いたいのかキチンとご自分で考えて細工を追加してください。 #類似の回答のマクロを同時に使ってはいけません。必ず別々に試します。
その他の回答 (2)
- xls88
- ベストアンサー率56% (669/1189)
>No.1 この回答へのお礼 changeイベントは生データの入力/編集、コピペに反応します。 No.1のコードでは対象セルをC2とC6に限定しています。 参照式あるいは計算式が入っている場合セルをC2とC6ではchangeイベントが発生しません。 従ってNo.2 keithinさんの回答の採用をお勧めします。 keithinさんのコードでは対象セルが限定されていません。 どこかのセルでデータの入力/編集、コピペがあればchangeイベントが発生します。 その結果、最大値最小値が書き変えられるようになっています。 C2とC6の式に使う元データが同じシートにあれば問題ないと思います。 C2とC6の式に使う元データが別シートにある場合 元データが変更されると再計算されて式の戻り値が変化します。 ところがchangeイベントは発生しないのでグラフの最大値最小値は書き変えられません。 この場合はCalculateイベントの方が確実かもしれません。
- xls88
- ベストアンサー率56% (669/1189)
データは直接手打ち入力していると考えていいですか? 該当シートの見出しを右クリック>コードの表示でVBE起動 表示されたVBEコードウインドウに下記コードをコピペ 取りあえずグラフ 1としていますが、グラフ名は正しいものに書き換えてください 余り検討していません。単純に最大値最小値を書き換えているだけです。 例えばセル数値が最大値最小値として相応しいかどうか判定文を入れた方が良いと思います。 (入力規則で規制できればそちらで対応してもよいと思います) Private Sub Worksheet_change(ByVal Target As Range) If Intersect(Target, Range("C2,C6")) Is Nothing Then Exit Sub If Target.value = "" Then Exit Sub With ActiveSheet.ChartObjects("グラフ 1").Chart.Axes(xlValue) If Target.Address = "$C$2" Then .MaximumScale = Target.value ElseIf Target.Address = "$C$6" Then .MinimumScale = Target.value End If End With End Sub
お礼
ありがとうございます。 シートの値は手入力だったり、他のシートのセル値を引っ張ってきたりいろいろなグラフを作成するので最大最小値を判定させるグラフを作成する際に参考になります。
お礼
VBを起動して、Calculateで作成できました。 ご指南いただきありがとうございました。