gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:25:06 24 4
gpt4 key购买 nike

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

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

Ex:



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

Want it to be

=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)

假设:
  • 假设上述公式在单元格 A1 到 A5
  • 所有单元格都在同一张表中
  • 没有 SUM、Vlookup 等工作表功能
  • 未完成错误处理。假设你会照顾它

  • 样本工作表

    enter image description here

    代码 :
    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

    输出

    enter image description here

    备注 :

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

    关于vba - 显示单元格的公式,但显示值而不是引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556406/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com