32

我正在尝试创建一个使用该INDIRECT函数动态构建的范围的图表。Excel 确实可以识别我正在使用的范围INDIRECT,因为它会突出显示工作表上的相应范围:

在此处输入图像描述

但是,在保存图表时,我收到一条错误消息,指出该函数无效:

在此处输入图像描述

有谁知道问题是什么/如何创建从特定起点到特定终点的动态图表范围?

PS:您可以在此处下载上述电子表格。我使用的公式:
=INDIRECT("sheet!"&E2&":"&E3)

4

7 回答 7

25

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

有一种方法可以解决这个问题,那就是使用命名范围

将您想要的数据行数放在一个单元格中(例如,E1)因此,使用您的
示例,我Number of Rows放入D1E16

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

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

现在,到您的图表 - 您需要知道工作簿的名称(一旦设置好,Excel 的跟踪更改功能将确保引用保持正确,无论任何重命名)

为保留Chart data range空白
Legend Entries (Series)像往常一样输入标题,然后输入您为数据定义的名称(请注意,使用命名范围需要工作簿名称)
数据点

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

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

于 2013-08-16T14:08:14.683 回答
19

我的类似于肖恩的优秀答案,但允许开始和结束日。首先创建两个命名范围,它们使用索引/匹配公式根据 E2 和 E3 选择开始和结束日期:

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

rng值

=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 帖子。

于 2013-08-16T14:41:15.543 回答
4

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

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

日范围:

="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,单击新建,并添加一个名为“chart_days”的新范围,参考=INDIRECT(Sheet1!$F$4); 和一个名为“chart_values”的新范围,指=INDIRECT(Sheet1!$F$5)

最后,在您的图表中,添加一个系列=nameOfYourWorkbook!chart_values

并编辑要参考的类别=nameOfYourWorkbook!chart_days

于 2013-08-16T14:57:52.970 回答
0

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

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

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

和 DataCars 如下:

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

您必须按照相同的过程定义与要包含的系列一样多的名称。在这个简单的例子中,我只包括汽车销售。

Initial Month 和 Last Month 是为单个单元格定义的范围名称,用于指示将包含图表的哪些月份(从开始月份到结束月份)。

请记住,正如 Sean Cheshire 和其他人所解释的,要使用图表值的名称,必须包含电子表格的名称。

于 2014-06-19T20:00:27.163 回答
0

根据您显示的公式: =INDIRECT("sheet!"&E2&":"&E3) 您没有正确命名工作表。

我原以为会是Sheet1!或Sheet2!等等。您的公式解析为 =sheet!E2:E3 这不是一个有效的地址。您收到的错误消息意味着 Excel 无法将输入解析为 INDIRECT。INDIRECT一个有效的函数,因此您提供的参数必须是无效的。

上述所有说明工作表名称的答案都已纠正您的错误但未提及... ;)

于 2015-12-29T06:43:32.933 回答
0

具有间接函数的命名公式在图表中不起作用。它适用于其他来源,因为您所需的动态源将被突出显示,但是当您在图表中时,它不会被评估。希望微软能解决这个问题。

于 2018-06-15T06:29:49.030 回答
0

如果折线图的范围是命名变量,并且该变量通过单元格对范围具有 INDIRECT() 引用,则该变量必须至少有 2 个以逗号分隔的 INDIRECT()。

于 2019-04-20T04:03:19.500 回答