Excel:获取一个公式中引用的地址,并在另一个公式中使用

Excel:获取一个公式中引用的地址,并在另一个公式中使用,excel,vba,Excel,Vba,是否有一种方法可以在Excel中获取被引用单元格的地址,从而可以在另一个公式中使用 我有一个单元格引用另一个单元格,内容为B1=地址!A4。在另一个单元格中,我想获取B1中包含的单元格引用,并使用它获取单元格中相对于引用单元格的值。我不想搜索单元格地址的值!A4,因为我要搜索的范围可能包含多个匹配项。我想要一个单元格的参考号 有办法做到这一点吗 例如: 一行单元格包含值A1=“123 E 400 S”、B1=“123”、C1=“400” 单元格包含对其中一个单元格的引用:G8=B1 因此,在单元

是否有一种方法可以在Excel中获取被引用单元格的地址,从而可以在另一个公式中使用

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

有办法做到这一点吗

例如:

一行单元格包含值A1=“123 E 400 S”、B1=“123”、C1=“400”
单元格包含对其中一个单元格的引用:G8=B1

因此,在单元格G8中显示值“123”。 我想在单元格F8中放置一个将使用G8中的引用作为指向B1的“指针”或索引的东西,然后我可以偏移它以获得A1

我想这样做,F8=偏移量(单元格(“内容”),G8),0,-1),这将导致显示值“123 E 400 S”。遗憾的是,这不起作用,我得到了一个裁判!错误

这似乎是索引、VLOOKUP、MATCH等的候选项,但我不想尝试定义要查找的单元格范围,它可能会更改。而潜在的搜索字符串“123”可能在该范围内重复,即使我要定义它

似乎我应该能够使用我已经知道的引用,去那个单元格,然后处理与那个单元格相关的单元格


有什么想法吗?感谢您的帮助。

编辑:一个更简单的方法

将单元格地址放在某个单元格中,并从单元格B1和C1中使用
间接
,可能更容易,这样您就不需要下面描述的额外功能了


VBA方法:用户定义的函数

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

示例使用,注意C1中的公式是
=GetFormula
,但显示的值是B1中的公式:

然后,您可以使用单元格公式
RIGHT
,也可以使用另一个函数直接在VBA中执行此操作。在VBA中执行此操作的优点是,您所执行的任何解析都将更加清晰,甚至可以使用RegExp

函数GetEndRange(rng作为范围)作为字符串
作为字符串的Dim str
str=rng.公式
'将字符置于感叹号的右侧
'假设公式以地址结尾,可以在此处执行更复杂的解析
str=右(str,Len(str)-InStr(str,“!”)
GetEndRange=str
端函数
使用:

现在可以使用单元公式(或更复杂的宏)访问偏移单元。以下是实现此目的的单元格公式方法:

=偏移量(间接(“地址!”&GetEndRange(B1),真),1,0)
“评估为:
'=偏移量(间接(“地址!A4”,真),1,0)
'=偏移量(地址!$A$4,1,0)
“=地址$A五美元

编辑:更简单的方法

将单元格地址放在某个单元格中,并从单元格B1和C1中使用
间接
,可能更容易,这样您就不需要下面描述的额外功能了


VBA方法:用户定义的函数

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

示例使用,注意C1中的公式是
=GetFormula
,但显示的值是B1中的公式:

然后,您可以使用单元格公式
RIGHT
,也可以使用另一个函数直接在VBA中执行此操作。在VBA中执行此操作的优点是,您所执行的任何解析都将更加清晰,甚至可以使用RegExp

函数GetEndRange(rng作为范围)作为字符串
作为字符串的Dim str
str=rng.公式
'将字符置于感叹号的右侧
'假设公式以地址结尾,可以在此处执行更复杂的解析
str=右(str,Len(str)-InStr(str,“!”)
GetEndRange=str
端函数
使用:

现在可以使用单元公式(或更复杂的宏)访问偏移单元。以下是实现此目的的单元格公式方法:

=偏移量(间接(“地址!”&GetEndRange(B1),真),1,0)
“评估为:
'=偏移量(间接(“地址!A4”,真),1,0)
'=偏移量(地址!$A$4,1,0)
“=地址$A五美元

我想你想要的是
间接的
.OFFSET()?没有更多的信息很难回答。请在您的原始帖子中为我们视觉学习者提供一些测试数据和预期输出。Tony,感谢您为您的问题添加更多信息,但我的回答没有帮助吗?它似乎达到了你的要求……我想你是在追求
间接的
.OFFSET()?没有更多的信息很难回答。请在您的原始帖子中为我们视觉学习者提供一些测试数据和预期输出。Tony,感谢您为您的问题添加更多信息,但我的回答没有帮助吗?它似乎达到了你的要求。。。
Function GetFormula(rng As Range) As String
    GetFormula = rng.Formula
End Function