【问题标题】:REF Error when using INDIRECT function to create dynamic row reference使用 INDIRECT 函数创建动态行引用时出现 REF 错误
【发布时间】:2022-10-13 01:14:28
【问题描述】:

我在“MasterSheetGrid”中有一个矩阵网格。我有单独的表格,将这些信息划分为特定的维度,使用户更容易处理。

为了使文件动态,我试图在函数中使用 INDIRECT 函数,以在返回之前找到 MasterSheetGrid 的哪一行来查找信息。

当我手动指定行时,该公式有效,但使用 INDIRECT 我收到 REF 错误,即使没有删除任何内容。

手动公式=INDEX(MasterSheetGrid!$5:$5,MATCH((XLOOKUP($J6,$5:$5,6:6)),MasterSheetGrid!6:6,0))

定位行的公式 =(MATCH($C6,MasterSheetGrid!$C:$C,0))

尝试通过引用存储上述公式的单元格来使用 INDIRECT 合并两者,这会导致 REF INDEX(MasterSheetGrid!$5:$5,MATCH((XLOOKUP($J6,$5:$5,6:6)),(INDIRECT(J2:J2,0))))

理想情况下,我不想使用单元格来存储查找行公式,但我想如果我可以使用单元格引用创建正确的公式,我可以重复该公式。

有谁知道我做错了什么?

This is the view of the user. The formula would sit within column K

This is the MasterSheetGrid view

【问题讨论】:

  • 你能分享一下MasterSheetGrid 的样子吗?
  • 更新了 MasterSheetGrid 的屏幕截图。
  • 虽然您的问题是如何使用 INDIRECT。我建议改用 INDEX。如果您希望动态引用工作表名称,则通常使用 INDIRECT。如果您有固定的工作表名称,则可以更好地使用非易失性 INDEX,例如 INDEX('MasterSheetGrid'!$1:$50,J6,)(将 50 更改为选项卡中的最后一行 #)
  • 感谢您的建议,您能否进一步解释一下,或提供更多有关插入公式部分的上下文?因为,我看不到在成熟度表网格中找到正确行的关系
  • 我输入J2 而不是J6,所以=INDEX(MasterSheetGrid!$5:$5,MATCH((XLOOKUP($J6,$5:$5,6:6)),INDEX(MasterSheetGrid!$1:$50,J2,),0)) 在给定示例中引用了该表的第6行

标签: excel excel-formula


【解决方案1】:

我建议不要使用INDIRECT,因为这会导致在文件中的任何更改时重新计算,我建议使用INDEX。您引用固定的工作表名称,因此无需使用INDIRECT

=INDEX(MasterSheetGrid!$5:$5,MATCH((XLOOKUP($J6,$5:$5,6:6)),INDEX(MasterSheetGrid!$1:$50,J2,),0))

将相当于您尝试过的。

正确使用INDIRECT 将是:

=INDEX(MasterSheetGrid!$5:$5,MATCH((XLOOKUP($J6,$5:$5,6:6)),INDIRECT("MasterSheetGrid!"&J2&":"&J2),0))

【讨论】:

    【解决方案2】:

    要使用INDIRECT 引用范围,您可以使用以下语法(作为分隔的字符串,例如由" 分隔):

    =INDIRECT("J2:J10")
    

    对于一个单元格,这有效:

    =INDIRECT(J2)
    

    但如果你对一个范围尝试同样的操作:

    =INDIRECT(J2:J10) -> #REF!
    

    你得到#REF!

    如果要从工作表中引用工作表,则在所有情况下都需要将输入参数作为字符串输入:

    =INDIRECT("Sheet1!A1:A10")
    =INDIRECT("Sheet1!A1")
    =INDIRECT("'Sheet 1'!A2") -> When Sheet Name has spaces use (') delimiter
    

    笔记: 顺便说一句,您使用第二个输入参数 (a1) 调用 INDIRECT,该参数是可选的值 0。正如我之前展示的那样,获取引用范围不是必需的。

    我怀疑这是您遇到的问题

    【讨论】:

    • 谢谢你的评论。我将行引用存储在 J2 中,所以我仍然需要显示工作表引用。我将如何展示这个?间接 (MasterSheetGrid""&J2&":"&J2&"")?
    • 是的,例如这有效:=INDIRECT("Sheet1!A1:A1"),但它就足够了:=INDIRECT("Sheet1!A1"),但如果您要引用工作表,则需要输入一个字符串。
    • 谢谢您的帮助。我刚刚尝试了关注=INDEX(MasterSheetGrid!$5:$5,MATCH((XLOOKUP($J6,$5:$5,6:6)),INDIRECT("MasterSheetGrid!J2",0))),但它仍然返回#REF!
    • 那么也许您还有另一个问题,如果没有太多上下文,如果您没有提供样本数据(输入/输出),我们可以重现您的问题,这很难提供帮助。那么请分享一个指向你的excel文件的链接,这样我们就可以看一下那个真实的例子,但最好提供一个示例数据,这只是一个pan B。
    • 嗨大卫,感谢您的所有帮助,现在已通过另一条评论解决,但我非常感谢您的帮助!谢谢你的信息
    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 2023-02-05
    • 2020-05-21
    • 2020-10-09
    • 2021-06-08
    • 1970-01-01
    • 2014-05-19
    • 2011-11-20
    相关资源
    最近更新 更多