2011-05-27 76 views
1

我在第一行有5个单元格:A1是1,B1是2,C1是3,D1是4,E1是5.现在我想选择奇数并将它们命名为“list_a_odd”,所以我保存CONTROL并选择A1,C1和E1,然后在名称框中输入“list_a_odd”,然后按ENTER键。现在在A2中,如果我键入“= SUM(list_a_odd)”,它会给我9的结果,这是正确的和预期的。但是如果我输入“= list_a_odd”,它会给我一个错误“#VALUE!”。但是,如果我选择所有5个单元格(A1到E1)并将其命名为“list_a”,并且在A2中放置了“= list_a”,它将在单元格中显示“1”,并且可以将A2到E2显示list_a中的所有5个数字。所以这在引用单元格中的非连续命名区域时看起来只是一个问题。这是一个Excel错误?Excel 2007:我如何引用非连续的命名范围?

+0

@Tony Wang:你的第一段似乎有一个错字导致了不一致。 '现在我想选择奇数并将它们命名为“list_odd”,因此我按住CONTROL并选择A1,C1和E1,然后在名称框中键入“list_a_odd”,然后按Enter。现在在A2中,如果我键入“= SUM(list_odd)”,'。你根据你的帖子命名范围'list_a_odd',但是你将'list_odd'传递给Excel。 – Jubbles 2011-05-27 18:43:49

+0

@Jubbles - 感谢您的提醒。我只是改变了它。这只是我的文章中的错字,在我的Excel表格中,我的名字一致。 – 2011-05-27 18:46:50

回答

4

您所描述的list_a行为是隐含交集范围的一个示例。 list_a指的是一个连续范围A1:E1,这是一个期望单个单元格的公式,当放置在AE列范围内时,使用此范围参考计算出交点并返回该单元格。
也就是说,C2 =A1:E1=list_a_odd中的公式实际上仅将C1修改为公式。

正如你所说,list_a_odd是一个不连续多区域范围。隐式相交不适用于不连续范围。
一些(但不是全部)函数适用于不连续范围,包括SUM,这就是为什么=SUM(list_a_odd)按预期工作的原因,就像=SUM(A1,C1,E1)也可以工作。

EDIT

返回表示不连续的范围内,我会用一个用户定义的函数以与阵列式组合的连续范围。

在UDF中,使用Range.Areas属性循环遍历不连续范围中的每个子范围(请记住,Areas中的每个项目可以是单个单元格或单独一个范围)。构建一个值数组以返回到工作表上的数组公式。

确切的细节将取决于您的具体要求以及您希望如何制作UDF。去吧,如果你需要更多帮助,请再次发帖

+0

感谢您的解释。我想要做的就是定义一个不连续的多单元格区域,然后将该区域以连续的方式放置在另一个表单上的特定行中。有什么办法可以实现吗? – 2011-05-28 01:58:41

+0

感谢提示。但我从未在VBA中做过任何编程,我的解决方法是将不连续的单元格映射到一系列连续的单元格,并为连续范围命名。 – 2011-05-29 03:06:17