如何返回多单元命名范围的值

时间:2015-11-02 01:46:50

标签: excel excel-vba named-ranges vba

我有一些命名范围,有些是单细胞NamedRanges,其他是多细胞。

当我在工作簿的任何单元格中使用"=AnyNameofSingleCellNamedRange"时,它会返回它的值。

但是当我使用"=AnyNameofMultiCellNamedRange"时会返回#VALUE错误,说明它的数据类型错误。

3 个答案:

答案 0 :(得分:2)

如果将= MultiCellNamedRange输入到与Excel引用的范围相同的行中的单元格中,则会执行隐式交集并为您提供值,即指定范围和行的交集。如果没有交叉点,那么你会得到#Value。

如果使用Control-shift-Enter输入= MultiCellNamedRange作为多单元数组公式,则Excel不会执行隐式交集,并将从多单元名称范围返回值数组。

答案 1 :(得分:2)

从多单元命名范围访问数据的最简单方法是INDEX函数。例如:

=INDEX(AnyNameofMultiCellNamedRange,2)

这给出了多细胞命名范围的第二个值。

=INDEX(AnyNameofMultiCellNamedRange,2, 3)

在2D数组中,它显示第2行和第3列上单元格的值。

在VBA中,它甚至更简单 - 您可以像引用任何其他数组一样引用它。例如:

x = AnyNameofMultiCellNamedRange (2,3)

请注意,如果在命名范围之后的括号中没有(x,y)或(x)引用,则实质上是说“make x = to the whole array”。

答案 2 :(得分:1)

=AnyNameofMultiCellNamedRange实际上是返回一个值数组。根据公式的物理位置,您可能会看到其中一个值或#VALUE!错误。

要查看单个值,您可以在相同尺寸范围内将其作为数组公式输入,也可以使用“索引”功能查看单个值。它将在带有数组参数的函数中按要求工作。