例如,我有一个命名范围 A10-A20 为Age
;我如何得到Age[5]
与 A14 相同的。
我可以写“ =A14
”,但我确实喜欢写“ =Age$5
”或类似的东西。
例如,我有一个命名范围 A10-A20 为Age
;我如何得到Age[5]
与 A14 相同的。
我可以写“ =A14
”,但我确实喜欢写“ =Age$5
”或类似的东西。
您可以使用 Excel 的Index
功能:
=INDEX(Age, 5)
“你知道是否有一种方法可以通过相对选择来完成这项工作,以便可以将公式“向下拖动”/应用于同一列中的多个单元格?”
要使这种选择相对简单,只需将 ROW 公式用于 INDEX 公式中的行号,将 COLUMN 公式用于 INDEX 公式中的列号。为了使这一点更清楚,这里是一个例子:
=INDEX(named_range,ROW(A1),COLUMN(A1))
假设命名范围从 A1 开始,该公式仅按引用单元格的行号和列号对该范围进行索引,并且由于该引用是相对的,因此当您将单元格向下或向一侧拖动时,它会发生变化,这样就可以创建整个数组细胞很容易。
有几种不同的方法可以做到这一点:
1) 使用命名范围模拟 Excel 表格
在您的示例中,您将范围命名为A10:A20
“年龄”。根据您希望如何引用该范围内的单元格,您可以(如@Alex P 所写)使用=INDEX(Age, 5)
,或者如果您想引用与公式在同一行的“Age”范围内的单元格,只需使用:
=INDEX(Age, ROW()-ROW(Age)+1)
这模仿了 Excel 表格中内置的相对参考功能,但如果您不想使用表格,这是一种替代方法。
如果命名范围是一整列,则公式简化为:
=INDEX(Age, ROW())
2) 使用 Excel 表格
或者,如果您将其设置为 Excel 表格并键入“年龄”作为年龄列的标题,则年龄列右侧的列中的公式可以使用如下公式:
=[@[Age]]
我一直愿意在所有行都相同并且通常引用同一行中的其他单元格的工作表中使用类似的东西 - 但随着公式变得复杂,对其他列的引用变得难以阅读。我尝试了其他答案中给出的技巧,例如名为“销售”的列 A,我可以将其称为INDEX(Sales;row())
但我发现它对我的口味来说有点太长了。
但是,在这种特殊情况下,我发现Sales
单独使用也同样有效 - Excel(此处为 2010)只会自动获取相应的行。
它似乎也适用于其他范围;例如,假设我有A2:A11
我命名的值Sales
,我可以使用=Sales*0.21
inB2:11
并且它将使用相同的行值,给出十个不同的结果。
我还在这个页面上发现了一个不错的技巧:命名范围也可以是相对的。回到最初的问题,如果您的值“Age”在 A 列中,并且假设您在同一行的公式中使用该值,您可以将 Age 定义为 $A2 而不是 $A$2,以便在使用时例如,在 B5 或 C5 中,它实际上是指 $A5。(名称管理器始终显示相对于当前选定单元格的引用)
在左侧添加一列,以便 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) )}
从 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,每个月都有一个元素包含在该范围内。
我花了一些时间来解析这个问题,但它确实有效,并且是上述问题的答案。