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