在excel公式中查找对单元格的引用

在excel公式中查找对单元格的引用,excel,vba,reference,formula,Excel,Vba,Reference,Formula,是否有公式或宏可以在另一个单元格中找到对单元格的引用? 例如: A | B | C ------------------ 1| 1 | 2 | =A1+B1 是否有一个公式将C1作为输入并返回=1+2?您可以尝试使用此用户定义函数,根据需要将公式中使用的单元格引用转换为其值 将以下功能放在标准模块(如Module1)上 Function CellRefereceToValue(ByVal rng As Range) As String Dim re As Object,

是否有公式或宏可以在另一个单元格中找到对单元格的引用? 例如:

   A  |  B  |   C
------------------
1| 1  |  2  | =A1+B1

是否有一个公式将
C1
作为输入并返回
=1+2

您可以尝试使用此用户定义函数,根据需要将公式中使用的单元格引用转换为其值

将以下功能放在标准模块(如Module1)上

Function CellRefereceToValue(ByVal rng As Range) As String
Dim re As Object, Matches As Object, Match As Object
Dim str As String
Set re = CreateObject("VBScript.RegExp")
With re
    .Global = True
    .Pattern = "[A-Z]+\d+"
End With

str = rng.Formula

If re.test(str) Then
    Set Matches = re.Execute(str)
    For Each Match In Matches
        str = Replace(str, Match, Range(Match).Value)
    Next Match
End If
CellRefereceToValue = str
End Function
然后假设你的公式是C2,如下图所示,在下面的表格中使用这个函数

=CellRefereceToValue(C2)
在下图中,Excel公式放在C列中,公式文本放在D列中,以显示C列中使用的公式,然后在E列中,可以看到UDF将C列公式中使用的所有单元格引用替换为相应的值


试试函数indirect(),看看“公式”选项卡中的“计算公式LUA”工具。=C1?正如所述,问题并不明确——C1不包括“参考”,而是一个公式。例如,如果C1为“D1”,则
INDIRECT()
公式适用。我怀疑您想解析C1中的公式,首先识别范围和非范围文本,以便重新显示。在这种情况下,考虑使用<代码>替换< /代码>公式(连同其他所需的)来替换范围信息(例如<代码> A1 < /代码>),使用<代码>间接()/<代码>。但是,到目前为止你试过什么?