У меня есть сводная диаграмма, которая обычно показывает 6-8 серий из 15 возможных, многие из которых, как правило, равны нулю. Таким образом, каждый раз, когда он обновляется, у него есть 15 серий, и Легенде нужно всего лишь перечислить серии с ненулевыми цифрами, чтобы диаграмма была загромождена и легко читалась.
Я пытаюсь использовать VBA для удаления определенных элементов, где все серии равны нулю (максимальное значение = 0), и столкнулся с большим количеством проблем, чем ожидалось:
Я перебираю каждый элемент из коллекции Chart's FullSeriesCollection, перебирая список серий по очереди . Однако, поскольку Легенда является отдельным объектом от Серии, вы не можете использовать текущую серию из моего цикла для ссылки на нее, и поэтому требует счетчика цикла .
Нет никакого способа узнать имя / значение элемента LegendEntries, поэтому вы должны сопоставить Series с легендой, не имея возможности подтвердить, какой элемент LegendEntries какой.
(очевидно, ниже функция присутствует в Excel 2007 и далее?)
Похоже, что объект FullSeriesCollection упорядочивает элементы (разумно) от 1 до 13, когда вы проходите через них, но объект LegendEntries упорядочивает элементы в обратном порядке, с
13 до 1.Объект LegendEntries начинает свой индекс с 0, поэтому его элементы фактически упорядочены от 12 до 0.
Объект LegendEntries нумерует свои элементы по мере удаления из него. Поэтому, когда вы удаляете элемент 1, все элементы в списке изменяются с 11 на 0.
Мне нужно обновлять диаграмму каждый раз, когда обновляется сводная таблица, чтобы перехватывать все удаленные элементы LegendEntries, которые теперь могут быть ненулевыми.
В свете этих осложнений я действительно изо всех сил пытался удалить конкретные элементы, которые мне нужно удалить из таблицы.
Как вы эффективно просматриваете элементы сводной таблицы и удаляете соответствующие серии LegendEntries везде, где все элементы равны нулю?