如果要使仪表板的图表根据所选选项更改其数据,则可以使用VBA中的事件。是的,可以做到。我们不需要任何下拉菜单,切片器或组合框。我们将使单元格可单击并更改数据以从所选单元格创建图表。

image

请按照以下步骤在excel中制作动态图表,该图表根据单元格选择而变化。

步骤1:准备工作表中的数据作为图表的源。

在这里,我有一些来自工作表中不同区域的示例数据。我将其命名为源数据。

image

步骤2:一次在另一张纸上获取一个地区的数据。

  • 现在插入一张新纸。适当命名。我将其命名为“仪表板”。

  • 将所有月份复制到一栏中。在月份旁边写下一个地区的名称。

image

  • 现在我们要提取单元格D1中区域的数据。我们希望数据随着D1中区域的变化而变化。为此,我们可以使用`link:/ lookup-formulas-vlookup-with-dynamic-col-index [双向查询]`。

由于我的源数据在源数据表的A2:D8中。我使用以下公式。

=VLOOKUP(C2,’Source

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

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

这里

  • 使用此数据在仪表板上插入图表。我使用一个简单的折线图。如果不想显示图表,请隐藏图表的来源。

image

现在,当您在D1中更改区域名称时,图表将相应更改。下一步是在指定单元格中选择一个选项时,更改D1中的区域名称。

步骤3:在指定范围内选择区域名称时更改区域。 *在一个区域中写入所有区域的名称,在区域A2:A4中写入它们。

image

  • 右键单击“仪表板”工作表名称,然后单击“查看代码”

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

我已经在下面解释了此代码的工作方式。您可以理解它并根据需要进行更改。我提供了本示例中在这里使用的帮助主题的链接。因此,请检查一下。

代码如何工作?

Excel的事件worksheet event”“ SelectionChange”来触发事件。

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

这条线将焦点设置到A2的范围:A4,使SelectionChange事件时,选择在范围A2仅触发:A4。如果选择在范围内A2如果和end之间的代码将只运行: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

在上述各行中,我们使用Excel的“ link:/ general-topics-in-vba-vba-select-case-nested-if-else-if-statements [Select Case Statement]”设置值范围D1。

Target.Interior.ColorIndex = 8

End If

err:

End Sub

在End If语句之前,我们更改所选选项的颜色,使其突出显示。然后,If语句结束,并且err:标记开始。

如果在选择语句期间发生任何错误,则On Error语句将跳转到该标记。

在下面下载工作文件。

image 48

相关文章:

在Microsoft Excel中使用VBA的嵌入式图表事件 **嵌入式图表事件可使您的图表比普通图表更具交互性,动态性和实用性。为了启用图表上的事件,我们…​

`link:/ events-in-vba-the-events-in-excel-vba [Excel VBA中的事件] || * Excel中有七种事件。每个事件涉及不同的范围。应用程序事件在工作簿级别处理。在工作表级别上的工作簿。范围级别的工作表事件。

`link:/ events-in-vba-the-worksheet-events-in-excel-vba [Excel VBA中的工作表事件] ** |当您希望在指定事件发生时运行宏时,工作表事件非常有用工作表。

在Microsoft Excel中使用VBA的工作簿事件 ||工作簿事件适用于整个工作簿。由于所有工作表都是工作簿的一部分,因此这些事件也适用于工作表。

防止自动宏/ eventmacro在Microsoft Excel中使用VBA执行] * |为防止运行auto_open宏,请使用shift键。

在Microsoft Excel中使用VBA绘制对象事件 **图表是复杂的对象,您已附加了几个组件。为了制作图表事件,我们使用类模块。

热门文章:

`link:/ keyboard-formula-shortcuts-50-excel-shortcuts可提高您的生产率[50 Excel快捷方式可提高生产率]] |更快地完成任务。这50个快捷键将使您在Excel上的工作更加快捷。

link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]|这是excel中最常用和最受欢迎的功能之一,用于从不同范围和工作表中查找值。

link:/ tips-countif-in-microsoft-excel [Excel 2016中的COUNTIF]|使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。

Countif功能对于准备仪表板至关重要。

link:/ excel-formula-and-function-excel-sumif-function [如何在Excel中使用SUMIF函数]|这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。