【问题标题】:Reference the location of a cell that is referenced by another cell引用另一个单元格引用的单元格的位置
【发布时间】:2015-08-13 19:17:45
【问题描述】:

我发布这个问题是因为我花了很长时间试图自己找到答案。

基本上,我有一个单元格引用一个单元格,该单元格引用另一个单元格,其中包含一些数据。例如,A3=A2A2=A1 和单元格 A1 包含文本 Hello。所以单元格A2A3 也包含相同的文本。见下图:

但是假设我实际上希望单元格A3 显示相对于A2 指向的单元格位置的数据(请记住A3=A2)。我需要使用OFFSET 函数来执行此操作,有人会认为A3=OFFSET(A2, 0, 1) 可能有效(click here to see how OFFSET works)。但是OFFSET 本身不起作用。它将数据从单元格返回到单元格A2 的右侧(如下所示),而不是意识到A2 指向A1,然后将数据返回到A1 的右侧。

那么我们如何通过单元格A2间接获得单元格A3=B1

【问题讨论】:

  • 这可能比您想象的要复杂,并且会根据 A2 中的公式而有很大差异。例如,如果 A2 是一个 vlookup,您可以使用 MATCH 来查找 VLOOKUP-ed 索引键。

标签: excel reference cell offset excel-indirect


【解决方案1】:

我们需要使用函数的组合,其中之一是INDIRECTclick here to see how INDIRECT works。因此,为了使用INDIRECT,我们需要在单元格A2 中找到文本。 FORMULATEXT 函数 (more info) 将从单元格 A2 中提取 =A1,当在单元格 A3 中这样使用时:

A3=FORMULATEXT(A2),如下图:

现在我们只需要从文本中删除=,这样我们就有了INDIRECT 可以使用的实际文本引用。您可以将RIGHTMID 函数(rightmid)与LEN 函数(length)结合使用。如果工作表中的行数从一位数变为两位数,则需要LEN,依此类推。您还需要再次传入FORMULATEXT 函数,以便它可以计算文本=A1 的长度。如果不这样做,它将计算Hello 的长度。您还需要注意 LEN()-1 是您需要的正确长度,因为您从文本中丢弃了 =

例如:A3=RIGHT(FORMULATEXT(A2),LEN(FORMULATEXT(A2))-1)给我们:

把它们放在一起,你可以OFFSETA2 引用的单元格从A3INDIRECT 像这样:

A3=OFFSET(INDIRECT(RIGHT(FORMULATEXT(A2),LEN(FORMULATEXT(A2))-1)),0,1)

【讨论】: