我在第一行有5个单元格:A1是1,B1是2,C1是3,D1是4,E1是5.现在我想选择奇数并将它们命名为“list_a_odd”,所以我坚持控制并选择A1,C1和E1,并在名称框中键入“list_a_odd”,然后按ENTER键。现在在A2中,如果我输入“= SUM(list_a_odd)”,它会给我9的结果,这是正确的和预期的。但如果我输入“= list_a_odd”,它会给我一个错误“#VALUE!”。
但是,如果我选择所有5个单元格(A1到E1)并将其命名为“list_a”,并将“= list_a”放在A2中,它将在单元格中显示“1”,我可以将A2拖到E2显示list_a中的所有5个数字。因此,当在单元格中引用非连续命名范围时,这看起来只是一个问题。这是一个excel bug吗?
答案 0 :(得分:4)
您描述的list_a
行为是范围的隐式交集功能的示例。 list_a指的是连续范围A1:E1
,一个期望单个单元格的公式,当放置在A
到E
列范围内时,使用此范围引用计算出交叉点并返回该单元格。
也就是说,C2 =A1:E1
或=list_a_odd
中的公式实际上将重新调整为C1
。
正如您所说,list_a_odd
是不连续的多区域范围。隐式交叉点不适用于不连续范围
一些(但不是全部)函数适用于不连续范围,包括SUM,这就是=SUM(list_a_odd)
按预期工作的原因,就像=SUM(A1,C1,E1)
一样。
修改强>
要返回表示不连续范围的连续范围,我将使用用户定义的函数与数组公式相结合。
在UDF中使用Range.Areas
属性循环遍历不连续范围内的每个子范围(请记住Areas
中的每个项目可以是单个单元格,也可以是其自身的范围) 。构建一个值数组以返回工作表上的数组公式。
具体细节取决于您的具体要求以及您想要制作UDF的一般方式。如果您需要更多帮助,请继续,然后重新发布