【发布时间】:2016-10-20 20:34:10
【问题描述】:
我想调用单元格 A???。 B1 的值为“100”。我想通过在 B1 中使用该值来调用 A100。那么如何生成对 CELL AB1 值的引用?我需要这样做,因为我希望它是动态的,所以我可以简单地更改 B1 的内容,然后让这个公式现在调用单元格 A200。
任何帮助将不胜感激。
-克里斯
【问题讨论】:
我想调用单元格 A???。 B1 的值为“100”。我想通过在 B1 中使用该值来调用 A100。那么如何生成对 CELL AB1 值的引用?我需要这样做,因为我希望它是动态的,所以我可以简单地更改 B1 的内容,然后让这个公式现在调用单元格 A200。
任何帮助将不胜感激。
-克里斯
【问题讨论】:
有多种方法:
=INDIRECT("A"&B1)
=OFFSET(A1,B1-1,0,1,1)
=INDEX(A:A,B1)
更新回应 Scott 的评论
如何在以上选项中进行选择:
间接: 每次更新工作表中的单元格时,间接都会导致重新计算,并且是“重”功能。但是,您可以动态构造地址(至少是行号)。这与您的问题最接近,并且最容易理解,如果您在工作表中只有一两个这样的公式,这可能很重要。
索引:只要定义了您需要选择的范围,索引即可提供出色的性能。至少在最新版本的 Excel 中,它可以双向工作(水平和垂直)。它的局限性在于它只能引用一个单元格而不是与其他方法不同的范围。即使您从选择范围中插入或删除行和列,这也是一个安全的选择。公式会自行调整。
偏移量:偏移量提供了更大的灵活性,但需要付出一定的代价。每次更新工作表中的任何单元格导致文件变得“重”时,Excel 都会重新计算此公式。它提供的好处是您需要进一步计算的范围大小灵活性。例如,您可以在 A1 =SUM(OFFSET(B2,A2-2,B1-2,A3,C1)) 中编写一个公式,以获取从 A2 中指定的行、B1 中的列、A3 中的宽度和 C1 中的高度开始的动态范围的总和。
因需要参考另一张工作表而更新
在这种情况下,我个人的偏好是偏移,因为它允许原始单元格位于另一个工作表中,甚至是另一个工作簿中!
=OFFSET(Sheet2!A1,B1-1,0,1,1)
针对 OP 在 cmets 中提出的更复杂问题进行更新
下面的公式将解决OP所说的复杂问题 =COUNTIF(OFFSET(INDIRECT(A2&"!Z"&C3),0,0,C4-C3+1,1),C5)+COUNTIF(OFFSET(INDIRECT(A2&"!F"&C3),0 ,0,C4-C3+1,1),C5)
说明
间接公式标识另一张纸上的起始单元格。
Offset 使用它并标识要比较的整个范围。
Countif 使用 Offset 的输出并计算匹配 C5 的单元格。
这对当前工作表中由 A2 指定的工作表上的 Z 列和 F 列执行了两次。总有希望!
【讨论】:
我更喜欢非易失性指数:
=INDEX(A:A,B1)
【讨论】:
使用这个公式:
=OFFSET(A1,B1-1,0)
第一个参数是“锚”单元格,第二个参数是垂直偏移量,第三个参数是水平偏移量。
作为锚单元,您可以选择一个任意单元,然后使用vertical 和horizontal 的偏移量。
【讨论】: