Проблема - почему это так?
Если вы установите источник данных с помощью .SetSourceData Source:=
, вы фактически позволите Excel угадать, как расположены данные в этом диапазоне. Если в этом диапазоне более одной строки, то Excel может проанализировать и угадать это довольно хорошо.
Но только с одной строкой данных Excel не может правильно определить, какой из текстовых данных является заголовком диаграммы, а какое имя строки / категории.
Решение проблемы…
Что означает, что вы должны быть более точными в своем определении.
Например, если вы включите строку 1, угадывание станет немного лучше:
Set Rng1 = .Range("R1:R" & LastRow & ", S1:S" & LastRow)
, но затем название диаграммы и название категории перейдут к стандартному Excel и результат:
Изображение 1: Перевернуты название диаграммы и название категории. Предположение Excel не было ожидаемым результатом.
Если вы точнее и точно сообщите Excel, какие данные находятся в этом диапазоне, вы получите точный результат:
With Sheets("Property Details").ChartObjects("Year").Chart
.SetSourceData Source:=Rng1
.FullSeriesCollection(1).Name = "='" & ShName & "'!$S$1" '≙ "=DynamicCharts!$S$1"
.FullSeriesCollection(1).Values = "='" & ShName & "'!$S$2:$S$" & LastRow '≙ "=DynamicCharts!$S$2:$S$" & LastRow
.FullSeriesCollection(1).XValues = "='" & ShName & "'!$R$2:$R$" & LastRow '≙ "=DynamicCharts!$R$2:$R$" & LastRow
End With
Изображение 2: с точным определением, где находятся данные, Excel не нужно угадывать, и вы получите желаемый результат.
Заключение
Excel очень терпелив, если вы не даете точных указаний, что именно делать. Так что он будет угадывать и представлять результат (который может быть не тем, что вы ожидали). Но чем точнее вы даете инструкции, тем меньше догадок Excel и тем точнее и надежнее результат.
Лучшая практика: всегда будьте максимально точными, чтобы избежать неожиданностей:)