【问题标题】:Calling A Cell Whose Row is the Contents of Another Cell调用一个单元格,其行是另一个单元格的内容
【发布时间】:2016-10-20 20:34:10
【问题描述】:

我想调用单元格 A???。 B1 的值为“100”。我想通过在 B1 中使用该值来调用 A100。那么如何生成对 CELL AB1 值的引用?我需要这样做,因为我希望它是动态的,所以我可以简单地更改 B1 的内容,然后让这个公式现在调用单元格 A200。

任何帮助将不胜感激。

-克里斯

【问题讨论】:

    标签: excel formulas


    【解决方案1】:

    有多种方法:

    =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)+COUN‌​TIF(OFFSET(INDIRECT(‌​A2&"!F"&C3),0 ,0,C4-C‌​3+1,1),C5)

    说明

    间接公式标识另一张纸上的起始单元格。

    Offset 使用它并标识要比较的整个范围。

    Countif 使用 Offset 的输出并计算匹配 C5 的单元格。

    这对当前工作表中由 A2 指定的工作表上的 Z 列和 F 列执行了两次。总有希望!

    【讨论】:

    • FWIW:Indirect 和 Offset 是 volatile 函数,因为即使基础数据没有更改,每次 Excel 计算时它们都会重新计算。虽然 INDEX 不是,并且只有在基础数据发生变化时才会重新计算。
    • 谢谢,斯科特。我昨天在 Google 上发现了一些关于使用 INDEX 功能的信息,但无法让它工作。今天它奏效了。我认为 INDIRECT 可能是适合我的方式。但我可能会放弃这条路线,因为我实际上必须用这个公式调用另一个 SHEET,而且我现在可以通过直接输入我需要的内容来编写这个电子表格十次。但也许这是我以后可以玩的东西。
    • 这就是我所拥有的。如果您有任何想法,请告诉我。
    • (按 ENTER 会发布这些 cmets;不酷):) =SUMPRODUCT(((--INDIRECT("'"&A2&"'!"&"Z100:Z199"))=C$5)* ((--INDIRECT("'"&A2&"'!"&"F100:F199"))="")) 我要调用的工作表的名称在单元格 A2 中。 ON 那张纸,我想调用 Z100:Z199 的范围(以及稍后在公式 F100:F199 中看到的)。我还在我打开的 SHEET 上引用单元格 C5。我要求在单元格 Z100:Z199 和 F100:F199 中显示多少次,是否存在与当前工作表上 C5 中的值匹配的值。 “100”和“199”的值分别在我当前工作表上的 CELLS C3 和 C4 中...
    • ...继续--- 我希望能够在 C3 或 C4 中更改 100 和/或 199 的值,并动态更改此公式。所以这是漫长而复杂的,但如果有任何希望,那就太好了。我发布的这个公式适用于调用另一张表(如有必要,可以更改其名称),但我希望它调用 100:199 或我放入 C3 和 C4 的任何内容。有意义吗?
    【解决方案2】:

    我更喜欢非易失性指数:

    =INDEX(A:A,B1)
    

    【讨论】:

      【解决方案3】:

      使用这个公式:

      =OFFSET(A1,B1-1,0)
      

      第一个参数是“锚”单元格,第二个参数是垂直偏移量,第三个参数是水平偏移量。

      作为锚单元,您可以选择一个任意单元,然后使用verticalhorizontal 的偏移量。

      【讨论】:

      • 请考虑接受并支持对您有用的答案(-s)。