非编程方法:

非编程方法:

我是一个相对幼稚的 Excel 用户,被丢在了单元格的海洋中。我的任务是将工作簿中一个单元格的值编码成 Python。当然,这个单元格有多个先例,这些先例又有多个先例,等等。

这个工作簿大约有 20 张工作表。其中大约一半只是数据,但其他工作表对这些数据做了各种残忍和邪恶的事情。仅主工作表就有数百个这样的函数单元。我现在用 Python 写了数百行代码,不知道还剩下多少。

我真的很想知道这个工作簿有多庞大和相互关联。有没有办法可以从一个单元格生成“先例树”,以查看它有多少层深以及它最终依赖于多少个单元格?

答案1

有两种可能的方法,第一种是非编程,第二种是编程(宏)。

非编程方法:

  1. 点击公式标签。
  2. 寻找配方审计集团& 点击显示公式图标,位于右上角。
  3. 键盘快捷键是Ctrl+ `

  4. 配方审计集团你发现追溯先例,只要单击它即可查看关系。

编程方法(VBA宏):

Sub ExtractAllFormulas()

    Dim sht As Worksheet
    Dim shtName
    Dim myRng As Range
    Dim newRng As Range
    Dim c As Range

ReTry:
    shtName = Application.InputBox("Write name of the new sheet to list all formulas.", "New Sheet Name")
    If shtName = False Then Exit Sub

    On Error Resume Next
    Set sht = Sheets(shtName)
    If Not sht Is Nothing Then
        MsgBox "This sheet already exists"
        Err.Clear
        Set sht = Nothing
        GoTo ReTry
    End If

    Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
    Application.ScreenUpdating = False
    With ActiveSheet
        .Range("A1").Value = "Formula"
        .Range("B1").Value = "Sheet Name"
        .Range("C1").Value = "Cell Address"
        .Name = shtName
    End With

    For Each sht In ActiveWorkbook.Worksheets
        If sht.Name <> shtName Then
            Set myRng = sht.UsedRange
            On Error Resume Next
            Set newRng = myRng.SpecialCells(xlCellTypeFormulas)
            For Each c In newRng
                Sheets(shtName).Range("A65536").End(xlUp).Offset(1, 0).Value = Mid(c.Formula, 2, (Len(c.Formula)))

                Sheets(shtName).Range("B65536").End(xlUp).Offset(1, 0).Value = sht.Name

                Sheets(shtName).Range("C65536").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Substitute(c.Address, "$", "")

            Next c
        End If
    Next sht
    Sheets(shtName).Activate
    ActiveSheet.Columns("A:C").AutoFit
    Application.ScreenUpdating = True
End Sub

怎么运行的:

  1. 将此 VBA 代码作为模块插入。
  2. 一旦运行它就会显示输入框。
  3. 写入新工作表名称并单击确定完成。

此代码将在新表中列出所有公式。

相关内容