2017-05-04 64 views
0

有没有办法在Excel中以可用于其他公式的方式获取引用单元格的地址?Excel:获取在一个公式中引用的地址,并在另一个公式中使用它

我有一个单元格引用另一个内容B1 = Address!A4。在另一个单元格中,我想获取B1中包含的单元格引用,并使用它来获取单元格中相对于引用单元格的值。我不想搜索单元格Address!A4的值,因为我要搜索的范围可能包含多个匹配项。我想要一个参考单元格。

有没有办法做到这一点?

例如:

单元的行中包含的值A1 = “123È400 S”,B1 = “123”,C1 = “400”
单元格中包含的参照这些小区中的一个:G8 = B1

所以在细胞G8 “123” 被显示值。 我想在小区F8的东西,将使用参考G8作为一个“指针”或索引B1,我就可以抵消以获得在A1的地方。

我想要这样做F8 = OFFSET(CELL( “内容”,G8),0,-1),这将导致值 “123ê400 S” 被显示。可悲的是,这不起作用,我得到了#REF!错误。

这可能看起来像INDEX,VLOOKUP,MATCH等的候选人,但我不想尝试定义要查看的单元格范围,它可能会更改。即使我要定义它,潜在的搜索字符串“123”也可能在该范围内重复。

看来我应该能够使用我已经知道的引用,转到该单元格,然后使用相对于该单元格的单元格。

任何想法?谢谢您的帮助。

+2

我认为你是'间接'后。 –

+2

OFFSET()?没有更多的信息很难回答。请为我们的视觉学习者在您的原始文章中包含一些测试数据和预期输出。 –

+0

托尼,感谢您为您的问题添加更多信息,但我的答案没有帮助,但?它似乎达到了你所要求的... – Wolfie

回答

2

编辑:更简单的方法

它可能更容易只是在某个单元格中的单元格地址,并使用INDIRECT细胞B1和C1,那么你并不需要额外的功能如下所述!

indirect


VBA方法:用户定义的函数

如果您可以将您的工作簿保存为.xlsm那么你可以使用一个用户定义的函数来获取公式启用宏,并提取单元格地址。将其添加到工作簿的VBA编辑器中的模块中(按Alt + F11,插入>模块)。

Function GetFormula(rng As Range) As String 
    GetFormula = rng.Formula 
End Function 

实施例使用,请注意在C1公式是=GetFormula,但示出的值是在B1下式:

get function

然后既可以使用电池式RIGHT,或做直接在VBA中使用另一个功能。在VBA中做这件事的好处是你做的任何解析都会更清晰,你可以使用RegExp。

Function GetEndRange(rng As Range) As String 
    Dim str As String 
    str = rng.Formula 
    ' Get the characters to the right of an exclamation point 
    ' Assumes formula ended in an address, could do more complicated parsing here 
    str = Right(str, Len(str) - InStr(str, "!")) 
    GetEndRange = str 
End Function 

用途:

end range

现在你可以使用一个单元格公式(或更复杂的宏)来访问偏移的单元。这里是细胞公式的方式来做到这一点:

=OFFSET(INDIRECT("Address!" & GetEndRange(B1),TRUE),1,0) 
' Evaluated as: 
' =OFFSET(INDIRECT("Address!A4",TRUE),1,0) 
' =OFFSET(Address!$A$4,1,0) 
' =Address!$A$5 
相关问题