excel - 使用来自下拉菜单的动态日期创建 Excel 图表

标签 excel excel-formula

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

 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

谁能告诉我如何创建这个?

最佳答案

是的,这是可能的:D。

有了一些动态范围和很大的耐心,您可以创建如下结果:

enter image description here

分步指南:

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

enter image description here

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

enter image description here

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

我们对“End_Date”执行完全相同的操作。我们将其引用到下面的单元格 $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

是时候将这些范围应用于图表了。我选择整个表格并创建一个折线图。然后我选择第一个图表系列:“Total Funding Before”。在公式栏中(图中标记为黄色),我需要更改我的引用。

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 image description here

其他系列也一样,所以第二个将是:
=SERIES(Sheet1!$D$6,Sheet1!Xaxis,Sheet1!YTotalFundingDuring,2)

enter image description here

最后一个系列也是如此。请注意,我更改了标题单元格 ($E$6)和序列号(3):
=SERIES(Sheet1!$E$6,Sheet1!Xaxis,Sheet1!YTotalFundingAfter,3)

enter image description here

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

表的好处是当添加新行(日期)时,范围将自动选择它们以及下拉列表。在下图中,我添加了 2 行用于演示目的。

enter image description here

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

关于excel - 使用来自下拉菜单的动态日期创建 Excel 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53107523/

相关文章:

mysql - Unicode CSV 文件中未显示孟加拉语文本

excel - Excel 2013 VBA 编辑器中的引用呈灰色

vba - 根据条件删除行不起作用

excel - 如果查找值在单个单元格中包含多个值,如何使用 vlookup

excel - 如何在 Excel 中添加多个 countif 语句?

excel - Excel 中的平均公式

vb.net - 如何正确读取单个 Excel 单元格

excel - 从 A :F where it indicates "This is not a date format" and paste the values in a specific column 复制行值

excel - 如何在电子表格中总结结果

Excel VBA加权平均值如果自定义函数