使用INDIRECT的dynamic图表范围:该函数无效(尽pipe范围突出显示)

我正在尝试创build一个使用INDIRECT函数dynamic构build的图表。 Excel确实使用INDIRECT识别我创build的范围,因为它突出显示了工作表上的相应范围:

在这里输入图像说明

但是,当保存图表时,我收到一条错误消息,提示该函数无效:

在这里输入图像说明

有人知道问题是什么/如何创build一个从特定的开始到特定的终点的dynamic图表范围?

PS: 你可以在这里下载上面的电子表格 。 我使用的公式是:
=INDIRECT("sheet!"&E2&":"&E3)

我和肖恩的优秀答案类似,但是允许开始和结束的一天。 首先创build两个使用索引/匹配公式来select基于E2和E3的开始和结束date的命名范围:

rngDay

 =INDEX(Sheet1!$A:$A,MATCH(Sheet1!$E$2,Sheet1!$A:$A,0)):INDEX(Sheet1!$A:$A,MATCH(Sheet1!$E$3,Sheet1!$A:$A,0)) 

rngValue

 =INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$2,Sheet1!$A:$A,0)):INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$3,Sheet1!$A:$A,0)) 

然后,您可以单击图表中的系列并将公式修改为:

 =SERIES(Sheet1!$B$1,Sheet1!rngDay,Sheet1!rngValue,1) 

在这里输入图像说明

这里有一个很好的Chandoo文章 ,介绍如何在图表中使用dynamic范围。

你试图做的方式是不可能的。 图表数据范围必须有一个固定的地址。

有一种解决方法,这是使用命名的范围

把你想要的数据放在一个单元格中(例如E1)
所以,用你的例子,我把E1 Number of Rows放在D16

在名称pipe理器中,为数据和标题定义名称
我使用了xrangeyrange ,并将它们定义为:

xrange:= OFFSET(Sheet1!$ A $ 2,0,0,Sheet1!$ E $ 1)
yrange:= OFFSET(Sheet1!$ B $ 2,0,0,Sheet1!$ E $ 1)

现在,到你的图表 – 你需要知道工作簿的名称(一旦你设置了,Excel的追踪变化function将确保引用保持正确,不pipe任何重命名)

Chart data range留空
对于Legend Entries (Series) ,照常input标题,然后input为数据定义的名称(请注意,工作簿名称是使用命名范围所必需的)
数据点

对于Horizontal (Category) Axis Labels ,input您为标签定义的名称
数据标签

现在,通过更改E1中的数字,您将看到图表变化:
E1在6E1在4

只是另一个答案的位和谷歌..

如果您仍想引用开始和结束单元格,则需要为date范围和值范围添加单独的公式。 公式如下,屏幕截图显示使用的公式。

date范围:

="Sheet1!"&$F$2&":"&ADDRESS(ROW(INDIRECT($F$3)),COLUMN(INDIRECT($F$2)))

值范围:

="Sheet1!"&ADDRESS(ROW(INDIRECT($F$2)),COLUMN(INDIRECT($F$3)))&":"&$F$3

在这里输入图像说明

然后添加引用这些单元的INDIRECT值的两个范围

按Ctrl + F3,单击新build,然后添加名为“chart_days”的新范围,引用=INDIRECT(Sheet1!$F$4) ; 和一个名为“chart_values”的新范围,指的是=INDIRECT(Sheet1!$F$5)

最后,在图表中添加一个指向=nameOfYourWorkbook!chart_values

并编辑类别来引用=nameOfYourWorkbook!chart_days

我使用OFFSET创build一个定义的名称公式,以便我可以定义数据的所有范围,允许我有一个开始结束date(或任何数据集的开始和结束位置)。

对于一个简单的图,我定义名称CategoryLabels如下:

 = OFFSET($A$5; (InicitialMonth-1); 0; LastMonth - (InitialMonth-1)) 

和DataCars如下:

 = OFFSET($B$5; (InicitialMonth-1); 0; LastMonth - (InitialMonth-1)) 

您将不得不按照相同的步骤来定义与您要包括的系列相同的许多名称。 在这种简单的情况下,我只包括汽车销售。

“初始月份”和“上个月份”是为单个单元格定义的“范围名称”,用于指示图表的哪个月份将包括在内(从开始到结束月份)。

请记住,正如肖恩·柴什(Sean Cheshire)和其他人所解释的,为了使用图表值的名称,必须包含电子表格的名称。

根据你所示的公式:= INDIRECT(“sheet!”&E2&“:”&E3)你没有正确命名表单。

我会认为这将是Sheet1! 或Sheet2! 等你的公式解决=表!E2:E3这不是一个有效的地址。 您收到的错误消息意味着Excel无法将inputparsing为INDIRECT。 INDIRECT 一个有效的函数,所以你提供的参数必须是无效的。

所有上述答复,其中说明表名已纠正你的错误,但不要提及它;;)