显示单元格的公式,而不是引用的值

我正在使用公式在另一个单元格中显示单元格公式。

我想在这个公式中显示每个引用的值,而不是引用。

例如:

= $ R $ 16 + R19 *($ T $ 15- $ R $ 16)

想要它

= 3 + 2 *(4-2)

我现在使用的函数来显示公式

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

这是一个非常基本的例子,可以处理像

 =B1+C1-D1/E1 =$B$1+C1*($B$1-$D$1) =B1+C1-(D1/E1) =B1+C1-(D1/E1) =$B$1*C1*($B$1/$D$1) 

假设:

  1. 假设上述公式在单元格A1到A5中
  2. 所有的单元格都在同一个表单中
  3. 没有像SUM,Vlookup等工作表函数
  4. 没有error handling完成。 假设你会照顾它的

示例工作表

在这里输入图像说明

代码

 Sub Sample() Dim i As Long For i = 1 To 5 Debug.Print ConvertToValues(Range("A" & i)) Next i End Sub Function ConvertToValues(rng As Range) Dim sTmp As String, sOpr As String, sOrig As String Dim s As String, v As String Dim MyAr Dim i As Long sOpr = "+,/,-,*,&,(,),{,},[,]" MyAr = Split(sOpr, ",") sTmp = Replace(rng.Formula, "$", "") sOrig = sTmp For i = LBound(MyAr) To UBound(MyAr) sTmp = Replace(sTmp, MyAr(i), "SIDROUT") Next i MyAr = Split(sTmp, "SIDROUT") For i = LBound(MyAr) To UBound(MyAr) s = MyAr(i) If Len(Trim(s)) <> 0 Then v = Range(s).Value sOrig = Replace(sOrig, s, v) End If Next i If sOrig <> "" Then _ ConvertToValues = "=" & sOrig End Function 

产量

在这里输入图像说明

注意

让我知道如果上述代码在特定情况下失败,我将更新代码。