Столкнулся со следующей проблемой: Есть таблица с данными (в примере несколько строк, на самом деле их несколько тысяч). Построил сводную таблицу, на ее основе сводную диаграмму и срезы.
В итоге в легенду диаграммы выводятся все заголовки столбцов из сводной таблицы. Вопрос, как убрать определенные подписи в легенде? В примере во вложении это подписи средней в отрасли по региону. Просто удалять пробовал, но когда меняю фильтр на срезе, надпись появляется снова. Удалить всю легенду - не вариант, нужно понимать где какой график, но доп. надписи "засоряют" легенду. Предполагаю, что можно макросом удалить надписи которые содержат "Средняя", но как это сделать?
Заранее спасибо за помощь.
Доброго времени суток, уважаемые эксперты!
Столкнулся со следующей проблемой: Есть таблица с данными (в примере несколько строк, на самом деле их несколько тысяч). Построил сводную таблицу, на ее основе сводную диаграмму и срезы.
В итоге в легенду диаграммы выводятся все заголовки столбцов из сводной таблицы. Вопрос, как убрать определенные подписи в легенде? В примере во вложении это подписи средней в отрасли по региону. Просто удалять пробовал, но когда меняю фильтр на срезе, надпись появляется снова. Удалить всю легенду - не вариант, нужно понимать где какой график, но доп. надписи "засоряют" легенду. Предполагаю, что можно макросом удалить надписи которые содержат "Средняя", но как это сделать?
Приложил скрин. То что выделено красным, нужно убрать из легенды, остальное оставить. При этом при изменении фильтра эти подписи не должны появляться. Я конечно могу удалить это руками, но когда меняю фильтр в срезе, эти надписи опять появляются. В макросах я не силен, пробовал записать удаление подписи из легенды, он выбирает по номеру подписи. Можно ли сделать макрос, чтобы он удалял подписи из легенды, которые содержат определенное слово, например "Средняя" ?
nilem, к сожалению, нет.
Приложил скрин. То что выделено красным, нужно убрать из легенды, остальное оставить. При этом при изменении фильтра эти подписи не должны появляться. Я конечно могу удалить это руками, но когда меняю фильтр в срезе, эти надписи опять появляются. В макросах я не силен, пробовал записать удаление подписи из легенды, он выбирает по номеру подписи. Можно ли сделать макрос, чтобы он удалял подписи из легенды, которые содержат определенное слово, например "Средняя" ?VVeps
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) With Me.ChartObjects(1).Chart .Legend.Delete .SetElement (msoElementLegendBottom) For i = .FullSeriesCollection.Count To 1 Step -1 If InStr(1, .FullSeriesCollection(i).Name, "средн", 1) Then .Legend.LegendEntries(i).Delete End If Next i End With End Sub
[/vba]
Так нужно? [vba]
Код
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) With Me.ChartObjects(1).Chart .Legend.Delete .SetElement (msoElementLegendBottom) For i = .FullSeriesCollection.Count To 1 Step -1 If InStr(1, .FullSeriesCollection(i).Name, "средн", 1) Then .Legend.LegendEntries(i).Delete End If Next i End With End Sub
Только когда переношу макрос на лист где много диаграмм, он не работает. Не могли бы пояснить, что значит Me.ChartObjects(1).Chart? И, как я понимаю, ваш макрос должен работать при обновлении листа? Или диаграммы?
Я на основании вашего макроса, сваял свой, который по кнопке удаляет лишнее из легенды. Но хотелось бы, чтобы это происходило автоматически. [vba]
Код
Sub DeletLegend()
With ActiveSheet.ChartObjects(1).Chart .Legend.Delete .SetElement (msoElementLegendBottom) For i = .FullSeriesCollection.Count To 1 Step -1 If InStr(1, .FullSeriesCollection(i).Name, "средн", 1) Then .Legend.LegendEntries(i).Delete End If Next i End With End Sub
[/vba]
_Boroda_, супер! Спасибо.
Только когда переношу макрос на лист где много диаграмм, он не работает. Не могли бы пояснить, что значит Me.ChartObjects(1).Chart? И, как я понимаю, ваш макрос должен работать при обновлении листа? Или диаграммы?
Я на основании вашего макроса, сваял свой, который по кнопке удаляет лишнее из легенды. Но хотелось бы, чтобы это происходило автоматически. [vba]
Код
Sub DeletLegend()
With ActiveSheet.ChartObjects(1).Chart .Legend.Delete .SetElement (msoElementLegendBottom) For i = .FullSeriesCollection.Count To 1 Step -1 If InStr(1, .FullSeriesCollection(i).Name, "средн", 1) Then .Legend.LegendEntries(i).Delete End If Next i End With End Sub
Me.ChartObjects(1).Chart - первая диаграмма на том листе, в модуле которого находится макрос. Если диаграмм несколько, то их нужно перебрать циклом. А может и не нужно. Зависит от того, что и как у Вас в файле Worksheet_PivotTableUpdate начинает работать при обновлении сводной таблицы
Me.ChartObjects(1).Chart - первая диаграмма на том листе, в модуле которого находится макрос. Если диаграмм несколько, то их нужно перебрать циклом. А может и не нужно. Зависит от того, что и как у Вас в файле Worksheet_PivotTableUpdate начинает работать при обновлении сводной таблицы_Boroda_