У меня есть файл в который каждую неделю приходят данные по продажам. Есть фиксированная строка с шапкой : (Week 1, Week 2 .... Week 52). Под будущими неделями данных нет. Я бы хотел просто менять номер недели - чтобы диаграмма автоматически включала в себя все прошлые данные включая текущую неделю. Умная таблица здесь не поможет - так как строка с шапкой фиксирована, а в пустых ячейках уже есть формула, чтобы извлекать данные. Поэтому я сделал динамический диапазон. И в диспетчере имен видно, что работает он хорошо (выделяется нужная для диаграммы область) В Диаграмма - выбрать данные я вставляю имя динамического диапазона. И первая диаграмма правильно стоится, однако не обнавляется при изменении номера недели (хотя динамический диапазон изменяется корректно). Подскажите решение пожалуйста. Пока склоняюсь к идее интергировать новые данные в access и выводить график с помощью power query, но тогда надо все переделывать. Пример набросал в прикрепленном файле. Спасибо
Ну если дело только в создании графика, то я бы делал через VBA. Да, макрос расположить на листе, а не в отдельном модуле (хотя... не проверял). Ну и всё остальное там интуитивно понятно.
Не претендуя на 100% оптимальность.
Код
Sub ChartsAdd()
Dim i As Integer
' Перебор по всем диаграммам на листе с последующим их удалением
For i = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(ActiveSheet.ChartObjects(i).Name).Activate
ActiveChart.Parent.Delete
Next i
' Создаём новый график
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(Cells(1, 1), Cells(5, Range("A1").Value + 1))
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
' Настройки графика расписывать не стану...
End Sub
Солидарен с tutochkin . Вариант с изменением значения ячейки [Q5] с числом дней:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Range("Q5"), Target)
If Target Is Nothing Then Exit Sub
Me.ChartObjects(1).Chart.SetSourceData Range("xxx"), xlRows
End Sub