График Excel Автоматическое изменение размера начала оси

У меня есть следующий код, который строит точечную диаграмму. Есть ли элегантный способ изменить размер области графика, чтобы оси x и y не всегда автоматически начинались с нуля, а чуть ниже самого низкого значения? На данный момент все мои точки данных сгруппированы в одном углу. Большое спасибо!

Set cht = ActiveChart
'GRAPH 1
    Set rng1 = ActiveSheet.Range(Range("AC13").Offset(jump * 50, 0), Range("AG23").Offset(jump * 50, 0))

With ActiveSheet.ChartObjects.Add(Left:=rng1.Left, Width:=rng1.Width, Top:=rng1.Top, Height:=rng1.Height)
 '(Left:=100, Width:=375, Top:=75, Height:=225)
    .Chart.ChartType = xlXYScatterLines
    .Chart.HasLegend = False
    .Chart.Axes(xlCategory).TickLabels.Font.Size = 18
    .Chart.Axes(xlValue).TickLabels.Font.Size = 18
    '.Chart.SetSourceData Source:=Range("U13:O40,T13:N40")
    Set srs = .Chart.SeriesCollection.NewSeries
            srs.XValues = Range(Range("U13").Offset(jump * 50, 0), Range("U13").Offset(jump * 50, 0).End(xlDown))
    srs.Values = Range(Range("T13").Offset(jump * 50, 0), Range("T13").Offset(jump * 50, 0).End(xlDown))

End With

person Mary    schedule 25.04.2013    source источник
comment
вы можете попробовать использовать .Chart.SetSourceData? msdn.microsoft.com/en-us/library/office/ff841196. aspx   -  person crapple    schedule 25.04.2013
comment
.SetSourceData не повлияет на автомасштабирование оси.   -  person Jon Peltier    schedule 24.09.2015


Ответы (2)


Если ваши данные y-диапазона находились в ячейках B1:B10 из ActiveSheet, вы могли бы использовать такой код, чтобы начать диапазон с 90% от наименьшего значения (т.е. чуть ниже)

Set cht = ActiveChart
cht.Axes(xlValue).MinimumScale = 0.9 * Application.Min([b1:b10])
person brettdj    schedule 25.04.2013
comment
Если я хочу, чтобы это значение было целым числом? Использование .Chart.Axes(xlCategory).MinimumScale = Int(0,8 * Application.Min(Range(Range(AL13), Range(AL13).End(xlDown))))) не работает (я пробовал и другие варианты) - person Mary; 25.04.2013
comment
У вас есть выбранная диаграмма? Я использовал ваш синтаксис ActiveChart - код запустился для меня - person brettdj; 25.04.2013
comment
Масштабирование работает для меня отлично. Однако я пытаюсь заставить его масштабироваться до целого числа, используя Int(). Например, использование «Set cht = ActiveChart .cht.Axes(xlValue).MinimumScale = Int(0,8 * Application.Min(Range(Range(AK13), Range(AN13)).End(xlDown))))» дает мне ошибку который я не могу обойти. Что я делаю не так? - person Mary; 25.04.2013
comment
Нет точки перед cht и диапазоны ссылок на активный лист: cht.Axes(xlValue).MinimumScale = Int(0.8 * Application.Min(ActiveSheet.Range(ActiveSheet.Range("AK13"), ActiveSheet.Range("AN13").End(xlDown)))) - person Jon Peltier; 24.09.2015

Взгляните на это руководство: Вычисление масштабов оси Nice в Excel VBA

person Jon Peltier    schedule 26.04.2013