Динамическая гистограмма Excel/Powerpoint без использования смещения

Как сделать так, чтобы столбчатая диаграмма Excel или PowerPoint не отображала #N/As? у меня такие данные

Дата продажи нетто

Янв-12 1.5 .5

12 февраля 2,6 1,5

N/A #N/A #N/A

N/A #N/A #N/A

У меня есть N?As в диапазоне данных, потому что они могут получить данные в какой-то момент, следовательно, динамический. Я не хочу использовать смещение, так как оно плохо работает на диаграмме, созданной в Powerpoint. Более 125 слайдов и 100 диаграмм, поэтому ручные изменения не годятся. Я создаю диаграммы в Powerpoint, а затем добавляю ссылки на страницу данных за диаграммой. Обновление в порядке, но после разрыва всех этих ссылок (у меня есть макрос для этого), именованные диапазоны смещения не будут обновляться, поскольку формуле требуется имя листа (например, Лист1!), Но Powerpoint называет его «Диаграмма в Microsoft PowerPoint». .

Надеюсь, я объяснил это достаточно. Спасибо


person mooseman    schedule 04.12.2012    source источник


Ответы (1)


Поскольку я не могу использовать смещения или именованные диапазоны с пользой, я создал этот макрос PPT, чтобы сбросить диапазон данных в моих данных 1) любая строка данных, которая не должна быть отображена на диаграмме, имеет значение оси x, равное нулю, а не # N /A 2) в F1 листа данных нужно подсчитать количество строк в диаграмме, используя countif not = 0 3) назвать диаграмму, я использовал макрос запуска StackedBar1

Если у кого-то есть более простое решение, пожалуйста, дайте мне знать.

Sub C_SetSourceData_StackedBar()
Dim s As Slide
Dim shp As Shape

For Each s In ActivePresentation.Slides   'moves through all slides in presentation
For Each shp In s.Shapes                  'moves through each shape on slide
    If shp.Name = "StackedBar1" Then      ' stacked bar chart that needs source data updated is named this

        Set c = shp.Chart                 'set c to the chart object

        Dim data As ChartData
        Set data = c.ChartData             'sets data to the chartdata behind the chart
        data.Activate                       'need to activate the chartdat(excel sheet)

            'in cell F1 the formula =countif(A1:A50,"<>0")  this counts the rows that are not zero
        x = data.Workbook.Worksheets(1).Range("F1").Value  'gets the last row number of data not zero
        Let rng = "Sheet1!$A$1:$E$" & x                    ' creates the source range as a string

       c.SetSourceData (rng)                               ' Sets the new source data range

        data.Workbook.Close                                 ' Close the chartdata workbook
    End If
Next shp
Next s
End Sub
person mooseman    schedule 05.12.2012