Если вы хотите создать панель мониторинга с диаграммой, которая изменяет свои данные в соответствии с выбранными параметрами, вы можете использовать события в VBA. Да, это может быть сделано. Нам не понадобится ни раскрывающийся список, ни слайсер, ни поле со списком. Мы сделаем ячейки кликабельными и изменим данные для создания диаграммы из выбранной ячейки.

image

Выполните следующие шаги, чтобы создать динамические диаграммы в Excel, которые изменяются в соответствии с выбором ячейки.

Шаг 1: Подготовьте данные на листе в качестве источника для диаграммы.

Здесь у меня есть образцы данных из разных регионов на листе. Я назвал это исходными данными.

image

Шаг 2: Получите данные по одному региону за один раз на другом листе.

  • Теперь вставьте новый лист. Назовите это соответствующим образом. Я назвал его «Панель управления».

  • Скопируйте все месяцы в один столбец. Напишите название одного региона рядом с месяцем.

image

  • Теперь мы хотим получить данные о регионе в ячейке D1. Мы хотим, чтобы данные менялись при изменении региона в D1. Для этого мы можем использовать link: / lookup-formulas-vlookup-with-dynamic-col-index [Two Way Lookup].

Поскольку мои исходные данные находятся в A2: D8 в таблице исходных данных. Я использую приведенную ниже формулу.

=VLOOKUP(C2,’Source

Data’!$A$2:$D$8,MATCH($D$1,’Source

Data’!$A$1:$D$1,0))

Здесь мы используем динамическую индексацию столбцов для VLOOKUP. Вы можете прочитать об этом link: / lookup-formulas-vlookup-with-dynamic-col-index [здесь].

  • Вставьте диаграмму, используя эти данные на листе Dashboard. Я использую простой линейный график. Скройте источник диаграммы, если не хотите его отображать.

image

Теперь, когда вы измените название региона в D1, диаграмма изменится соответствующим образом. Следующим шагом является изменение имени региона в D1 при выборе параметра в указанной ячейке.

Шаг 3. Измените регион при выборе имени региона в указанном диапазоне. * Пишите названия всех регионов в диапазоне, я пишу их в диапазоне A2: A4.

image

  • Щелкните правой кнопкой мыши имя листа панели инструментов и выберите «Просмотреть код»

возможность войти непосредственно в модуль рабочего листа в VBE, чтобы мы могли использовать ссылку: / events-in-vba-the-worksheet-events-in-excel-vba [событие рабочего листа] `.

image

  • Теперь напишите ниже код в редакторе VB.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("A2:A4")) Is Nothing Then

Range("A2:A4").Interior.ColorIndex = xlColorIndexNone

Dim region As Variant

region = Target.value

On Error GoTo err:

Select Case region

Case Is = "Central"

Range("D1").value = region

Case Is = "East"

Range("D1").value = region

Case Is = "West"

Range("D1").value = region

Case Else

MsgBox "Invalid Option"

End Select

Target.Interior.ColorIndex = 8

End If

err:

End Sub

И это сделано. Теперь, когда вы выбираете ячейку в диапазоне A2: A4, ее значение будет присвоено D1, и данные диаграммы будут соответственно изменяться.

image

Я объяснил, как работает этот код ниже. Вы можете понять это и внести изменения в соответствии с вашими требованиями. Я предоставил ссылки на разделы справки, которые я использовал здесь в этом примере. Так что проверьте их.

Как работает код?

Здесь я использовал ссылку: / events-in-vba-the-events-in-excel-vba [Событие Excel] `. Я использовал ссылку `: / events-in-vba-the-worksheet-events-in-excel-vba [событие рабочего листа]« SelectionChange »для запуска событий.

If Not Intersect(Target, Range("A2:A4")) Is Nothing Then

Эта строка устанавливает фокус на диапазон A2: A4, так что событие SelectionChange срабатывает только тогда, когда выделение находится в диапазоне A2: A4. Код между If и End будет выполняться, только если выбор находится в диапазоне A2: A4. Теперь вы можете настроить его в соответствии с вашими требованиями, чтобы сделать диаграмму динамической.

Range("A2:A4").Interior.ColorIndex = xlColorIndexNone

Эта строка устанавливает нулевой цвет диапазона A2: A4.

region = Target.value

On Error GoTo err:

В двух приведенных выше строках мы получаем значение выбранных ячеек в переменной области и игнорируем любые возникающие ошибки. не используйте строку «On Error GoTo err:», пока не убедитесь, что хотите игнорировать любую возникающую ошибку. Я использовал его, чтобы избежать ошибки при выборе нескольких ячеек.

Select Case region

Case Is = "Central"

Range("D1").value = region

Case Is = "East"

Range("D1").value = region

Case Is = "West"

Range("D1").value = region

Case Else

MsgBox "Invalid Option"

End Select

В приведенных выше строках мы используем ссылку на excels: / general-themes-in-vba-vba-select-case-alternate-of-nested-if-else-if-applications [Select Case Statement] `для установки значения диапазона D1.

Target.Interior.ColorIndex = 8

End If

err:

End Sub

Перед оператором End If мы меняем цвет выбранной опции, чтобы она была выделена. Затем оператор If завершается и начинается тег err :.

Оператор On Error перейдет к этому тегу, если во время выполнения оператора select возникнет какая-либо ошибка.

Загрузите рабочий файл ниже.

image 48

Статьи по теме:

link: / events-in-vba-chart-object-events-using-vba-in-microsoft-excel [События встроенной диаграммы с использованием VBA в Microsoft Excel] * | События встроенных диаграмм могут сделать вашу диаграмму более интерактивной, динамичной и полезной, чем обычные диаграммы. Для включения событий на графиках мы …​

link: / events-in-vba-the-events-in-excel-vba [События в Excel VBA] | * В Excel существует семь типов событий. Каждое событие имеет разный характер. Событие приложения работает на уровне книги. Рабочая тетрадь на уровне листов. Событие рабочего листа на уровне диапазона.

link: / events-in-vba-the-worksheet-events-in-excel-vba [События рабочего листа в Excel VBA] * | Событие рабочего листа действительно полезно, когда вы хотите, чтобы ваши макросы запускались, когда указанное событие происходит в Лист.

link: / events-in-vba-workbook-events-using-vba-in-microsoft-excel [События книги с использованием VBA в Microsoft Excel] | События книги работают со всей книгой. Поскольку все листы являются частью рабочей книги, эти события работают и с ними.

link: / events-in-vba-prevent-that-an-automacroeventmacro-executes-using-vba-in-microsoft-excel [Предотвратить выполнение automacro / eventmacro с использованием VBA в Microsoft Excel] * | Чтобы предотвратить запуск макроса auto_open, используйте клавишу Shift.

link: / events-in-vba-chart-object-events-using-vba-in-microsoft-excel [События объекта диаграммы с использованием VBA в Microsoft Excel] * | Диаграммы — это сложные объекты, к которым вы прикрепляете несколько компонентов. Для создания событий диаграммы мы используем модуль Class.

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-повышения-продуктивность [50 сочетаний клавиш Excel для повышения производительности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков сделают вашу работу в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов.

link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию. Вам не нужно фильтровать данные для подсчета определенного значения.

Функция Countif важна для подготовки вашей приборной панели.

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.