我正在尝试使用动态命名范围在 Excel 2010 中创建散点图,但无法正常工作。以下是失败的简单示例:
打开 Excel,开始新的工作簿
输入一些数据:
在单元格 D1 中输入:
$A$1:$B$5
。(在我的真实工作表中,这是动态计算的,但手动输入仍然存在问题)。在功能区上,单击公式、定义名称。使用如下所示的 公式定义
MyRange1
为工作表本地名称:=INDIRECT(Sheet1!$D$1)
单击“确定”,然后插入散点图。
打开“选择数据”对话框并输入
='Sheet1'!MyRange1
Excel 崩溃...
该问题在 Windows XP 和 Windows 7 上均出现,且在两种情况下都安装了 Excel 2010,并且每次都会重复出现。
我也尝试过:
为 x 和 y 数据定义单独的范围并使用“编辑系列”对话框。
='Sheet1'!MyXRange
在 X 值字段中输入后,Excel 停止接受键盘和鼠标输入,但 Esc 键除外,该键用于退出对话框。如果我返回对话框,它才会崩溃。将命名范围限定为工作簿而不是工作表。这实际上确实可以阻止崩溃,但我在“选择数据”对话框中收到错误,具体取决于我是否
=MyRange1
键入='Sheet1'!MyRange1
:
这是一个已知问题吗?或者有地方可以报告吗?我这里没有 Excel 2007 或 2003,因此无法检查问题是否只限于 2010。如果我无法让它正常工作,我可能会使用 VBA 而不是动态命名范围。
更新:我以为我弄明白了(我发布了一个答案,现在已删除)。我将单元格 D1 = $A$1:$B$5 中的值更改为 D1 = 'Sheet1'!$A$1:$B$5,图表已正确创建。但是,创建图表时似乎不是动态的 - 它只是使用当前值来创建 X 和 Y 系列,因此更改 D1 不会使图表更新。
答案1
根据下面的链接和我的亲自测试,您必须以以下形式输入数据系列
'WorkbookName.xls'!RangeNameX
如果您的名称是动态的,则生成的图表也将是动态的。我对动态命名范围使用的公式是(根据您的情况进行修改并用于 X 和 Y 范围)。
=OFFSET($A$1,0,0,MATCH(1E+306,$A:$A,1),1)
这使得图表变得动态,只要向图表添加新附加的值(图表更新之前需要 X 和 Y 值)。
答案2
当使用 INDIRECT 定义范围时,图表通常无法正确使用范围,甚至通常不接受这些命名范围。有更好(更强大)的方法来定义动态范围,例如使用 INDEX 或 OFFSET。
即使图表可以识别该名称,它也会转换为“选择数据源”对话框的“图表数据范围”框中的单元格地址。名称仅在 X、Y 和每个单独系列的系列名称范围内保留。
如果在单元格 D1 中为范围添加工作表名称前缀?图表需要完全限定的范围,因此如果单元格 D1 包含,
Sheet1!$A$1:$B$5
您可以在“选择数据源”对话框的“图表数据范围”框中使用定义的名称。请注意,根据第 2 点,当您单击“确定”时,Excel 会将此范围转换为其单元格地址。
答案3
以下是我创建动态图表的方法。
根据你的数据创建一个表。
突出显示表格
转到插入选项卡并选择所需的图表类型。
当您向表中添加数据时,它也会更新到图表中。