漂亮的打印Excel公式?

Ada*_*eal 7 excel pretty-print worksheet-function

有没有人知道一个(免费)工具来漂亮地打印Excel公式?谷歌搜索没有改变任何东西.

我有一些半复杂公式的工作表,所以这将使我的生活更轻松.

我只是想改变这样的事情

AC6+AD6+(IF(H6="Yes",1,IF(J6="Yes",1,0)))+IF(X6="Yes",1,0)
Run Code Online (Sandbox Code Playgroud)

无需手动在Vim等中进行操作即可获得更具可读性的内容.Excel确实在括号上进行了颜色匹配,但它仍然在一条线上拼接在一起.

jos*_*ett 10

试试Excel Formula Beautifier http://excelformulabeautifier.com/.它漂亮的打印(又名美化)Excel公式.

(我帮助保持这一点,总是寻求反馈以使其更好.)


jto*_*lle 4

该 VBA 代码不会获奖,但可以快速查看典型公式。它只是执行您手动使用括号或分隔符执行的操作。将其粘贴到代码模块中并从 VBA 立即窗口命令行调用它。(编辑:我最近不得不查看一些公式,并且我对原来的答案进行了改进,所以我回来并更改了它。)

Public Function ppf(f) As String
    Dim formulaStr As String

    If IsObject(f) Then
        Debug.Assert TypeOf f Is Range

        Dim rng As Range
        Set rng = f

        formulaStr = rng.Formula
    Else
        Debug.Assert VarType(f) = vbString

        formulaStr = f
    End If

    Dim tabs(0 To 99) As Long

    Dim tabNum As Long
    tabNum = 1

    Dim tabOffset As Long

    Dim i As Long
    Dim c As String
    For i = 1 To Len(formulaStr)
        c = Mid$(formulaStr, i, 1)

        If InStr("({", c) > 0 Then
            ppf = ppf & c

            tabNum = tabNum + 1
            tabs(tabNum) = tabs(tabNum - 1) + tabOffset + 1
            tabOffset = 0

            ppf = ppf & vbCrLf & Space(tabs(tabNum))
        ElseIf InStr(")}", c) > 0 Then
            tabNum = tabNum - 1
            tabOffset = 0

            ppf = ppf & c & vbCrLf & Space(tabs(tabNum))
        ElseIf InStr("+-*/^,;", c) > 0 Then
            tabOffset = 0

            ppf = ppf & c & vbCrLf & Space(tabs(tabNum))
        Else
            ppf = ppf & c

            tabOffset = tabOffset + 1
        End If
    Next i
End Function
Run Code Online (Sandbox Code Playgroud)

如果你这样称呼它:

?ppf([q42])
Run Code Online (Sandbox Code Playgroud)

您不必担心转义双引号等。您将得到如下所示的输出:

AC6+
AD6+
(
 IF(
    H6="Yes",
    1,
    IF(
       J6="Yes",
       1,
       0)
    )
 )
+
IF(
   X6="Yes",
   1,
   0)
Run Code Online (Sandbox Code Playgroud)

您也可以使用纯字符串来调用它。