Как создать несколько диаграмм из одного шаблона для разных входов / сценариев - PullRequest
0 голосов
/ 15 января 2019

Я использую Excel, и у меня есть некоторые базовые знания VBA / Macro. У меня есть достаточно большой набор данных, который обновляется каждую неделю. Исходя из этого, я использую серию Index / match для создания таблицы, которая состоит из 40 столбцов (даты) на 4 строки (данные временных рядов) для конкретного продукта. У меня 15-20 разных продуктов, которые часто меняются. Эта таблица 4x40 затем используется для создания диаграммы. Используя это вручную, я могу выбрать продукт с помощью выпадающего списка (Проверка данных), мои индексы / совпадения перетаскивают правильные данные в таблицу 4x40, и отображается диаграмма для этого продукта. Но я хотел бы иметь макрос, который сгенерирует диаграмму для продукта 1, скопирует и вставит как изображение в слово doc, затем сделает то же самое для продукта 2, 3 и т. Д., А затем сохранит слово doc в формате PDF для распространения.

Можно было бы создать 15-20 таблиц 4x40 и 15-20 диаграмм, а затем просто скопировать / вставить их все, но это станет кошмаром для обслуживания при изменении продуктов, и если изменения форматирования запрашиваются, более чем вероятно.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Альтернативой, которая будет автоматически генерировать все 20 диаграмм с каждым обновлением с 0 vba, будет выполнение следующих шагов 1 раз: 1. Создайте сводную таблицу и диаграмму сводной таблицы, необходимую для данного продукта, например, отфильтруйте ее по одному коду продукта, создайте базовую диаграмму, отмените форматирование на данный момент. Исходные данные для этой сводной таблицы должны включать данные для всех 20 продуктов

  1. В исходных данных для шага 1 добавьте еще один столбец с именем FilterID и установите его по формуле, чтобы 1 = данные для первого продукта; 2, второй; 3 и т. Д.

  2. Вернитесь к сводной таблице шага 1 и добавьте FilterID в качестве сводного фильтра, установите для него значение 1, чтобы на графике отображался только первый продукт

  3. Форматирование диаграммы по вкусу

  4. Теперь скопируйте лист, содержащий сводную таблицу и сводную диаграмму, 20 раз

  5. Увеличивать FilterID для каждой копии

Единственный vba, который вам нужен на данный момент, - это циклически проходить по каждому листу с действующей диаграммой и сохранять в pdf

0 голосов
/ 15 января 2019

Не видя точного рабочего листа, сложно дать точный кусок кода. Однако я недавно сделал рабочую тетрадь с таким же требованием.

В качестве наброска ответа вы могли бы рассмотреть возможность использования цикла для циклического просмотра списка из 15–20 продуктов, помещая каждый из них в ячейку, в которой вы в настоящее время проверяете данные (убедитесь, что сначала вы удалили любую проверку), это будет затем обновите индекс совпадений, а также ваш график. В этом цикле вы можете включить некоторый код для сохранения листа в формате PDF, прежде чем переходить к следующему продукту (или поместить диаграмму на отдельную таблицу и ссылаться на нее явным образом).

например, если ваша проверка находится на листе A1 таблицы «Таблица», а список продуктов - A2: на листе A20 «Продукты» что-то подобное поможет вам в этом;

Sub save_charts()

Dim i As Long
Dim path As String
Dim product_name As String
Dim ws_name As String
Dim file_name As String

i = 2
path = Application.DefaultFilePath

Do Until Worksheets("Products").Cells(i, 1).Value = ""

If Worksheets("Products").Cells(i, 1).Value <> "" Then
product_name = Worksheets("Table").Cells(1, 1).Value
ws_name = product_name & " Chart"
file_name = path & "\" & ws_name
Worksheets("Table").Cells(1, 1).Value = Worksheets("Products").Cells(i, 1).Value
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        file_name, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True

End If

i = i + 1

Loop

End Sub

Мне известно, что вы упоминали, что копировали это в слово перед экспортом в формате pdf? Это требование? Поскольку этот код использует только собственный экспорт из Excel в формат PDF.

Надеюсь, это поможет.

Приветствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...