Автоматически сгенерированный график из одного большого файла Excel - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь создать автоматически генерируемые графики в Excel. Мне нужно создать 50 диаграмм из одной таблицы Excel. Для каждого графика есть уникальный идентификатор.

Что я ищу, так это когда я щелкаю по уникальному идентификатору в столбце B (например, ASD), всплывает диаграмма, отображающая разделы (столбец) и Vs. Год для выбранного уникального идентификатора. Ниже я привел пример диаграммы для удобства. Я не очень хорош в программировании. Мне действительно нужна твоя помощь. Я буду очень признателен, если вы поможете мне здесь. Спасибо

Пример графика количества УЧИТЕЛЬ ПРОТИВ КЛАССОВ И ПЛАТЫ
Пример таблицы для создания графика

1 Ответ

0 голосов
/ 31 августа 2018

Я склонен использовать вспомогательный лист, я помещаю в него формулы для сбора данных, необходимых для использования в диаграмме, обычно используя SUMIFS (), COUNTIFS (), VLOOKUP () и т. Д.

В качестве альтернативы, если я делаю электронную таблицу большего размера, я буду использовать ListObjects (таблицы) и определять имена в менеджере имен, используя комбинацию OFFSET, MATCH, VLOOKUP и т. Д., Чтобы автоматически возвращать диапазон значений из объектов ListOject, а затем ссылаться на них в таблице / с.

Какой бы из двух указанных выше вариантов вы не использовали, мы можем обновить целевой уникальный идентификатор с помощью следующего VBA, учтите, что книгу необходимо сохранить как книгу с поддержкой макросов. Этот код обновит ячейку A1 в HelperSheet, который мы будем использовать для обновления данных для диаграммы;

  • Перейти к VBA (F11)
  • Откройте базу кода для листа с вашими идентификаторами.
  • Добавьте приведенный ниже код.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim varIntersects As Variant
        'Change Columns(1) to match your ID column.
        Set varIntersects = Intersect(Selection, ActiveSheet.Columns(1).EntireColumn)
        If Application.Selection.Cells.Count = 1 Then
            If Not varIntersects Is Nothing Then
                If Not Selection.Value = "" Then
                    'Change HelperSheet and A1 to suit your needs.
                    Worksheets("HelperSheet").Range("A1") = Selection.Cells.Value
                End If
            End If
        End If
    End Sub
    
...