Excel VBA - Добавить метки данных из диапазона тела таблицы - PullRequest
0 голосов
/ 31 октября 2018

У меня есть лист Excel с таблицей, содержащей столбцы для имени проекта, x, y, размера для создания пузырьковой диаграммы.

Я бы хотел изменить метки данных, чтобы они соответствовали названию соответствующего проекта, но как мне это сделать? Я искал в Интернете решения, но ни одно из них не принесло успеха.

Вот мои данные:

  • Название диаграммы: Диаграмма 1
  • Имя таблицы: Таблица (у этого есть заголовки, и я только поиск диапазона в таблице (диапазон тела данных).

Вот мой код, который выдает ошибку 91:

Sub InsertLabelnameBubble()
    ActiveChart.FullSeriesCollection(1).DataLabels.Select

    For i = 1 To Range("Table").Rows.Count
        ActiveChart.FullSeriesCollection(1).Points(i).DataLabel.Select
        Selection.Formula = Range("Table").Cells(i, 1)
    Next i
End Sub

Вот скриншот моего проекта.

Screenshot 1

Где вы можете видеть, что он использует столбец Y (ожидаемый потенциал проекта) в качестве текста метки данных. Я хотел бы, чтобы он брал его из первого столбца моей таблицы (Project #).

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Так что я сам нашел решение. Вот мой последний код, вставляющий метки из таблицы в пузырьковую диаграмму:

Sub DataLables()

  ActiveSheet.ChartObjects("Chart 1").Activate
  ActiveChart.FullSeriesCollection(1).DataLabels.Select

  For i = 1 To Range("Table1[Project '#]").Count

    ActiveChart.FullSeriesCollection(1).Points(i).DataLabel.Select

    Selection.Formula = Range("Table1[Project '#]").Cells(i, 1)

  Next i

End Sub
0 голосов
/ 31 октября 2018

Это код, который я использую для меток данных из диапазона. Нашли это в stackoverflow некоторое время назад:

Sub DataLables 
    Dim ws as worksheet, DataLR As Series, pts As Points, pt As Point, rngLabels As Range, IDi As Integer, ChtObj As ChartObject
    Set ws = ActiveWorkbook.ActiveSheet 

    With ws
    Set ChtObj = .ChartObjects("ChatName")
    Set rngLabels = .Range("A5:A39")
            Set DataLR = ChtObj.Chart.SeriesCollection(2)
            DataLR.HasDataLabels = True  
         For Each pt In pts
         IDi = IDi + 1
             pt.DataLabel.Text = rngLabels.Cells(IDi).Text
             pt.DataLabel.Font.Bold = True
         Next pt    
    End With

End Sub

Дайте мне знать, если это поможет. Он обновит метки данных значениями в диапазоне.

...