首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示单元格的公式,但是值而不是引用

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

Stack Overflow用户
提问于 2013-12-12 23:31:46
回答 1查看 1.2K关注 0票数 1

我使用一个公式来显示另一个单元格中的单元格公式。

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

例:=$R$16+R19*(15元新台币-16元雷亚尔) 希望它是 =3+2*(4-2)

函数,我现在使用它来显示公式。

代码语言:javascript
复制
Function GetFormula(Cell As Range) As String
   GetFormula = Cell.Formula
End Function
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 02:10:12

下面是一个非常基本的示例,它可以处理以下情况

代码语言:javascript
复制
=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. 没有错误处理。假设你会照顾好它

样本工作表

代码语言:javascript
复制
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

输出

Note

如果上述代码在特定情况下失败,请告诉我,我将更新代码。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20556406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档