使用下拉菜单中的动态日期创建Excel图表

时间:2018-11-01 18:47:58

标签: excel excel-formula

我正在尝试创建一个折线图,可以在其中使用下拉菜单选择开始日期和结束日期(看到的数据将动态变化以反映这些日期)。目前,我的数据如下:

 Date    (Total Funding Before) (Total Funding During) (Total Funding After)
 8/2017    150                          160                  150
 9/2017    160                          160                  160
 10/2017   170                          170                  150
 11/2017   180                          180                  170
 12/2017   190                          180                  160

谁能给我关于如何创建它的见识?

1 个答案:

答案 0 :(得分:4)

是的,有可能:D。

有了一些动态范围和足够的耐心,您可以创建类似以下结果的结果:

enter image description here

分步指南:

首先,我们将整个表制作为“ Excel表”。转到“首页”->“格式化为表格”。

enter image description here

下一部分,我们需要创建几个“命名范围”。转到:“公式”->“名称管理器”->“新建...”

enter image description here

我们将开始日期设为“命名范围”。我将其命名为“ Start_Date”。并且它引用单元格$B$3我的工作表名称为“ Sheet1”。

我们对“结束日期”执行完全相同的操作。我们将其引用到下面的单元格$ B $ 4。

enter image description here

然后,我们为“日期”列创建一个名称范围。我们将范围命名为“ Dates”。检查“引用:”的格式是否为“ = {TableX[Column Name]”。在我们的情况下,=Table1[Date]。注意,名称管理器不使用“ B7:B16”,而是对表列区域的引用。 最后一步非常重要!,因为我们希望使所有引用动态化。

enter image description here

创建开始日期和结束日期的下拉列表的时间。

转到:“数据”->“数据验证”->选择:“列表”->“源:” =Dates,这是我们在上一步中命名的范围。

enter image description here

创建X轴动态范围的时间。我将其命名为“ XAxis

=OFFSET(Sheet1!$B$7,MATCH(Start_Date,Dates,0)-1,0, MATCH(End_Date,Dates,0)- MATCH(Start_Date,Dates,0)+1,1)

此公式将搜索第一行中第一个日期(Start_Date)的位置。然后它将看到结束日期的位置(End_Date)。这两个将共同创造我们需要的范围。 我使用“ ;”作为分隔符,而美国使用“ ,”作为分隔符。

enter image description here

现在,我们创建所需的所有Y范围。我们要绘制的每个系列中的一个。

我们从“之前的总资金”列开始。我将其命名为:YTotalFundingBefore并应用以下公式。

=OFFSET(XAxis,0,1)

因此,我们使用与XAxis相同的范围,并将其向右偏移一列。

enter image description here

我们对以下两个系列进行相同的操作。

关于创建一个“名称”范围的每个新系列的通知,我们将更改列偏移量。因此,最后一个我命名为“ YTotalFundingAfter”的系列和公式几乎相同,除了 3

=OFFSET(XAxis,0,3)

enter image description here

是将这些范围应用于图形的时间。我选择整个表格并创建一个折线图。然后,我选择第一个图表系列:“之前的总资金”。在编辑栏中(图片中标记为黄色),我需要更改引用。

enter image description here

在这里我想给个窍门以节省一些时间。

当我重写公式时,我会这样开始……因为命名范围将自动出现(如您在图片中所见):

=SERIES(Sheet1!$C$6,Xaxis,YTotalFundingBefore,1)

enter image description here

然后,在所有变量的前面添加工作表名称。在我的情况下为“ Sheet1”。完整的公式将是:

=SERIES(Sheet1!$C$6,Sheet1!Xaxis,Sheet1!YTotalFundingBefore,1)
=SERIES(HeaderCell , XAxis Range , Y-Axis Range , Serie Number)

然后我们按Enter。

enter image description here

其他系列也一样,所以第二个是:

=SERIES(Sheet1!$D$6,Sheet1!Xaxis,Sheet1!YTotalFundingDuring,2)

enter image description here

与最后一场同样。 注意,我更改了标题单元格($E$6)和serienumber(3):

=SERIES(Sheet1!$E$6,Sheet1!Xaxis,Sheet1!YTotalFundingAfter,3)

enter image description here

最后,我们有了一个基于开始和结束日期值的动态图。

使用表的好处是,当添加新行(日期)时,范围将自动将其选中,并且将下拉列表也选中。在下面的图片中,我添加了两行用于演示。

enter image description here

此设置有一个重要的缺点。当用户应用日期范围(2017-08)中的整个第一个日期时, AND 范围2018-07,图表系列将删除名称范围,并使用如下绝对值:(=SERIES(Sheet1!$E$6,Sheet1!$B$7:$B$18,Sheet1!$C$7:$C$18,1))。我的解决方案是在日期范围的开头增加一个或两个额外的日期。我们可能永远不会使用的日期,因此永远不会使用完整的日期范围。