2

Я хотел бы связать имя ряда диаграмм с диапазоном в моей рабочей таблице, но не со всей строкой в этом диапазоне. Например, вместо привязки имени к ячейке, содержащей "201601", я хочу, чтобы имя серии было 2016. Я пытался использовать Left(ячейка, 4) при назначении имени, но это выдает ошибку.

Текущий код VBA

Sub changeLinks()
For i = 1 To ActiveSheet.ChartObjects.Count
    ActiveSheet.ChartObjects(i).Chart.SeriesCollection(1).Name = "=Left(" & Range("P18").Address(, , , True) & ",4)"
    ActiveSheet.ChartObjects(i).Chart.SeriesCollection(2).Name = "=Left(" & Range("I18").Address(, , , True) & ",4)"
    ActiveSheet.ChartObjects(i).Chart.SeriesCollection(3).Name = "=Left(" & Range("B18").Address(, , , True) & ",4)"
Next i    
End Sub

Как я могу изменить свой код, чтобы сделать это?

2 ответа2

1

Когда вы звоните SeriesCollection.Name , что делает Excel, это обновляет функцию SERIES() которая определяет серию. SERIES() не может принимать функции для аргументов. Он может принимать только диапазон, именованный диапазон или строковый аргумент.

Вам нужно будет сделать это в два этапа, например:

Sub changeLinks()
Dim i&
Dim name1$, name2$, name3$

name1 = Left(Range("P18").Value, 4)
name2 = Left(Range("I18").Value, 4)
name3 = Left(Range("B18").Value, 4)

For i = 1 To ActiveSheet.ChartObjects.Count
    ActiveSheet.ChartObjects(i).Chart.SeriesCollection(1).Name = name1
    ActiveSheet.ChartObjects(i).Chart.SeriesCollection(2).Name = name2
    ActiveSheet.ChartObjects(i).Chart.SeriesCollection(3).Name = name3
Next i
End Sub
0

Вам нужно поместить формулу в другую клетку. Например, в P17 поместите эту формулу:

=LEFT(P18,4)

Затем используйте P17 в качестве диапазона, содержащего название серии (в диалоговом окне «Выбор данных»). При изменении P18 формула в P17 изменится, как и название серии на диаграмме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .