【问题标题】:How do I reference a cell within excel named range?如何引用excel命名范围内的单元格?
【发布时间】:2011-01-26 17:54:11
【问题描述】:

例如,我有一个命名范围 A10—A20 为Age;我如何获得与 A14 相同的Age[5]

我可以写“=A14”,但我确实喜欢写“=Age$5”或类似的东西。

【问题讨论】:

    标签: excel excel-formula named-ranges


    【解决方案1】:

    从 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,该范围内包含每个月的一个元素。

    我花了一些时间来解析这个问题,但它确实有效,并且是上述问题的答案。

    【讨论】:

      【解决方案2】:

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

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

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


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

      【讨论】:

        【解决方案3】:

        在左侧添加一列,以便 B10 到 B20 是您的命名范围 Age。

        将 A10 设置为 A20,使 A10 = 1, A11= 2,... A20 = 11 并为 A10 到 A20 的范围命名,例如AgeIndex

        然后可以使用数组公式找到第 5 个元素:

        =sum( Age * (1 * (AgeIndex = 5) )
        

        由于它是一个数组公式,您需要按 Ctrl + Shift + Return 使其工作,而不仅仅是返回。这样做,公式将变成一个数组公式:

        {=sum( Age * (1 * (AgeIndex = 5) )}
        

        【讨论】:

          【解决方案4】:

          我有几种不同的方法:

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

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

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

          这模仿了 Excel 表格中内置的相对参考功能,但如果您不想使用表格,这是一种替代方法。

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

          =INDEX(Age, ROW())
          

          2) 使用 Excel 表格

          或者,如果您将其设置为 Excel 表格并键入“年龄”作为年龄列的标题,则年龄列右侧的列中的公式可以使用如下公式:

          =[@[Age]]
          

          【讨论】:

          • "..那么你在 Age 列右侧的列中的公式..." 除非我误解了你的回答,我认为问题是在询问是否有办法在命名列
          【解决方案5】:

          “您是否知道是否有一种方法可以通过相对选择来实现这一点,以便可以将公式“向下拖动”/应用于同一列中的多个单元格?”

          要使这种选择相对简单,只需将 ROW 公式用于 INDEX 公式中的行号,将 COLUMN 公式用于 INDEX 公式中的列号。 为了更清楚地说明这一点,这里举个例子:

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

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

          【讨论】:

          • 如果我需要知道命名范围开始的单元格,这不会破坏命名范围的整个概念吗?
          • 这取决于你想做什么,大多数时候命名范围将从顶部开始。我已经有一段时间没有在 Excel 中做任何事情了,但我记得过去创建电子表格模型时,我能够创建动态命名范围,该范围根据过滤器具有不同的位置,所以我猜不是 ROW 或 COLUMN 的硬编码 A1你会使用一些动态的东西来返回参考。我现在无法测试这个,因为我在 Linux 上。
          • @Dana,我不这么认为; row(A1)column(A1) 只生成坐标(1,1),您可以使用它来索引命名范围中的第一个单元格。如果named range 不是从 A1 开始,它的工作原理也是一样的。
          • @AnjoMan,你说得对,我测试过了!这是使人们能够索引相对于命名范围的引用的好方法。 Dawid Stróżak,大多数时候,当我使用命名范围时,我会将它们放在任何我想访问我不想一直寻找的值或值范围的地方。我特别是在用 VBA 编写时这样做。我的大部分命名范围都在工作表中的任何位置,甚至从不靠近顶部,更不用说大部分在顶部了。
          • @Cyber​​chipz - 与其对这个答案进行大刀阔斧的修改,不如写下自己的答案,“扩大大卫的答案......”
          【解决方案6】:

          可以使用Excel的Index函数:

          =INDEX(Age, 5)
          

          【讨论】:

          • 您知道是否有一种方法可以通过相对选择来实现这一点,以便可以将公式“向下拖动”/应用于同一列中的多个单元格?
          • 如何使用索引来访问年龄子集,例如5-7 岁?
          • 我找到了答案:INDEX(NamedRange,5):INDEX(NamedRange,7))
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-01-09
          • 1970-01-01
          • 2021-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多