如何在Excel中查找单元格的所有依赖项(还有条件格式和数据validation)

我需要清理一个非常复杂的Excel文件。

为了能够擦除单元格,我需要确保它不在工作簿中的某处使用。 我知道可以通过进入公式审计>跟踪依赖关系来查找是否在另一个单元格公式中使用单元格,但是如果在以下上下文中使用该单元格,则不起作用:

  • 在另一个单元格的数据validation中用于下拉列表的范围的一部分
  • 在另一个单元格的条件格式的公式部分。

这两个Excelfunction在工作簿中使用很多。

你知道一个方法来发现这些依赖关系吗?

尝试这样的事情,而不是100%,但看起来像从简单的testing工作

Sub DependantTest() For Each i In DependantOnValidation(Range("A1")) Debug.Print i Next i End Sub 

使用这个function

 Function DependantOnValidation(rngLookAt As Excel.Range) As Collection Dim ws As Worksheet Dim rInspect As Range Dim rWorking As Range Dim rIntersect As Range Set ws = ThisWorkbook.Worksheets("sheet1") On Error Resume Next Set DependantOnValidation = New Collection For Each rInspect In ws.Range("a1:z1") Set rWorking = Range(Replace(rInspect.Validation.Formula1, "=", vbNullString)) If Not rWorking Is Nothing Then Set rIntersect = Application.Intersect(rngLookAt, rWorking) DependantOnValidation.Add rInspect.Address End If Set rWorking = Nothing Next rInspect End Function 

而对于CF这样的事情,还不完整

 If rInspect.FormatConditions.Count > 0 Then For Each fCondition In rInspect.FormatConditions If fCondition.Formula1 <> "" Then If InStr(1, fCondition.Formula1, rngLookAt.Address(True, True)) > 0 Or _ InStr(1, fCondition.Formula1, rngLookAt.Address(False, True)) > 0 Or _ InStr(1, fCondition.Formula1, rngLookAt.Address(True, False)) > 0 Then End If End If Next fCondition End If