#excel #vba #graph
#excel #vba #График
Вопрос:
У меня есть некоторые данные в столбце A, и я пытаюсь написать макрос, чтобы расширить диапазон данных до следующего столбца B, чтобы каждый раз, когда я добавляю данные в следующие столбцы, макрос расширял границу, чтобы включить эти данные в график графика.
Смотрите Изображение ниже, где в мой график включен только столбец A —
Что мне нужно сделать, чтобы заставить его также включить следующий столбец — столбец B
Например:
Что вы думаете?
Комментарии:
1. Попробуйте поместить свои данные в таблицу (вставка> таблица) и посмотреть, решит ли это вашу проблему.
2. Как заполняются значения в столбцах, вручную, с помощью VBA или по формуле?
Ответ №1:
Это работает для меня:
Sub ExpandChartSource()
Dim ObjChart As Object
Dim RngSource As Range
Set ObjChart = ActiveSheet.ChartObjects(1)
Set RngSource = Range(Split(ObjChart.Chart.SeriesCollection(1).Formula, ",")(2))
Set RngSource = RngSource.Resize(RngSource.Rows.Count, RngSource.Columns.Count 1)
ObjChart.Chart.SetSourceData Source:=RngSource
End Sub
Вот более динамичная версия, полезная, если вы хотите неограниченно увеличивать данные:
Sub ExpandChartSource()
Dim ObjChart As Object
Dim RngSource As Range
Dim IntSeries As Integer
Dim StrAddress As String
Set ObjChart = ActiveSheet.ChartObjects(1)
Set RngSource = Range(Split(ObjChart.Chart.SeriesCollection(1).Formula, ",")(2))
StrAddress = RngSource.Cells(1, 1).Address
Set RngSource = Range(Split(ObjChart.Chart.SeriesCollection(ObjChart.Chart.SeriesCollection.Count).Formula, ",")(2))
StrAddress = StrAddress amp; ":" amp; RngSource.Cells(RngSource.Rows.Count, 1).Address
Set RngSource = Range(StrAddress)
Set RngSource = RngSource.Resize(RngSource.Rows.Count, RngSource.Columns.Count 1)
ObjChart.Chart.SetSourceData Source:=RngSource
End Sub
Предполагается, что первая серия является самой левой, в то время как предполагается, что последняя серия находится справа.
Комментарии:
1. это потрясающе, спасибо, это сделало именно то, что я хотел.