如何引用excel命名范围内的单元格?

时间:2010-03-12 08:38:05

标签: excel named-ranges

E.g。我将A10命名为A20作为年龄,现在如何获得与A14相同的Age [5]。

我可以写“= A14”,但我确实喜欢写“=年龄5美元”等等。

7 个答案:

答案 0 :(得分:56)

您可以使用Excel的Index功能:

=INDEX(Age, 5)

答案 1 :(得分:11)

“你知道是否有办法通过相对选择来实现这一点,以便公式可以”拖拽“/应用于同一列中的几个单元格?”

要进行相关选择,只需使用ROW公式为INDEX公式中的行号和INDEX公式中列号的COLUMN公式。 为了使这里更清楚,例如:

=INDEX(named_range,ROW(A1),COLUMN(A1))

假设命名范围从A1开始,此公式只是按引用单元格的行数和列数索引该范围,并且由于该引用是相对的,因此当您将单元格向下或向侧面拖动时它会发生变化,从而可以创建整个细胞阵容很容易。

答案 2 :(得分:2)

我会采用两种不同的方式:

1)使用命名范围模拟Excel表格

在您的示例中,您将范围命名为A10:A20"年龄"。根据您想要引用该范围内的单元格的方式,您可以(如@Alex P所写)使用=INDEX(Age, 5)或者如果您想引用范围内的单元格" Age"与您的公式位于同一行,只需使用:

=INDEX(Age, ROW()-ROW(Age)+1)

这模仿Excel表格中内置的相对参考功能,但如果您不想使用表格,则可以选择其他功能。

如果命名范围是整个列,则公式简化为:

=INDEX(Age, ROW())

2)使用Excel表格

或者,如果您将其设置为Excel表格并键入" Age"作为Age列的标题标题,那么Age列右侧列中的公式可以使用如下公式:

=[@[Age]]

答案 3 :(得分:2)

我一直愿意在工作表中使用类似这样的东西,其中所有行都是相同的,并且通常引用同一行中的其他单元格-但是随着公式变得复杂,对其他列的引用将变得难以阅读。 我尝试了其他答案中给出的技巧,例如,列A名为“销售”,我可以将其称为INDEX(Sales;row()),但是我觉得它太长了。

但是,在这种特殊情况下,我发现单独使用Sales也是一样的-Excel(此处为2010)会自动获取相应的行。

它似乎也可以与其他范围一起使用;例如,假设我在A2:A11中有一个名为Sales的值,我可以在=Sales*0.21中使用B2:11,它将使用相同的行值,给出十个不同的值结果。

---编辑:

我还发现了一个关于this page的妙招:命名范围也可以是相对的。回到您的原始问题,如果您的值“ Age”在A列中,并且假设您在同一行的公式中使用该值,则可以将Age定义为$ A2而不是$ A $ 2,以便在使用时例如在B5或C5中,它实际上是指$ A5。 (名称管理器始终显示相对于当前所选单元格的引用)

erlative named range

答案 4 :(得分:1)

对于列表数据, ChrisB的答案是2的最佳选择-使用插入表将其定义为结构化表有很多好处(包括自动维护您新添加的行中的格式和公式添加到表格中,可以通过右键单击,拖放标题以重新排列列来轻松地插入和删除表格行),以及像ChrisB的示例一样的结构化引用。如果您在列标题中使用SI符号(总是可以在每列上方添加更具描述性的标题),那么相当复杂的公式就很容易理解和检查。

Joubarc 发现了几种引用命名单元格数组中单元格的好方法。引用数组名称的好处是它既可以用于命名数据​​行,也可以用于命名列。我有一个电子表格工具,该工具具有从左到右的条目(以与数据上方的可靠性框图对齐)-谢谢,Joubarc;根据您的建议,我可以使公式更容易理解。 (我尝试对其进行投票,但这必须等到获得足够的积分-我是新用户)

答案 5 :(得分:0)

在左侧添加一列,以便B10到B20是您的命名范围Age。将A10设置为A20,使得A10 = 1,A11 = 2,... A20 = 11,并将范围A10至A20赋予名称,例如AgeIndex。然后可以使用数组公式"找到第5个元素。 = sum(年龄*(1 *(AgeIndex = 5))"。因为它是一个数组公式,你需要按shift + ctrl + return才能使它工作而不仅仅是返回。

答案 6 :(得分:0)

要读取EJ_PAYDATES_2021范围内的特定日期(索引位于最后一个“ 1”旁边)

=INDEX(PayDates.xlsx!EJ_PAYDATES_2021,1,1)  // Jan
=INDEX(PayDates.xlsx!EJ_PAYDATES_2021,2,1)  // Feb
=INDEX(PayDates.xlsx!EJ_PAYDATES_2021,3,1)  // Mar

这允许从另一个电子表格文件中读取范围为[0]等的特定元素。目标文件无需打开。上例中的范围名为EJ_PAYDATES_2021,该范围内每个月包含一个元素。

花一点时间来解析它,但是它可以工作,并且是上面所提问题的答案。