VBA程序:列出指定工作表中的所有公式

2024-01-15 10:11:05 浏览数 (2)

标签:VBA

下面的VBA过程在指定的新工作表中列出指定工作表中的所有公式,包含具体的公式、所在工作表名称及其所在单元格地址。

代码:

代码语言:javascript复制
Sub ListAllFormulas()
 Dim sht As Worksheet
 Dim rSheet As Worksheet
 Dim myRng As Range
 Dim newRng As Range
 Dim c As Range
 Dim endRow As Long
 
 '放置公式的工作表, 可修改为你的实际工作表名
 Set rSheet = Sheets("FormulasSheet")
 '要查找公式的工作表, 可修改为你的实际工作表名
 Set sht = Sheets("Sheet1")
 '查找已使用的单元格区域
 Set myRng = sht.UsedRange
 
 '错误处理, 以应对没有公式的情形
 On Error Resume Next
 '使用SpecialCells进一步减少循环
 Set newRng = myRng.SpecialCells(xlCellTypeFormulas)
 '仅遍历SpecialCells区域
 For Each c In newRng 
   With rSheet
     '设置放置公式工作表中有数据行之下的空行
     endRow = .Range("A" & Rows.Count).End(xlUp).Row   1
     '去掉公式中的"="号后, 将公式放置在列A中
     .Range("A" & endRow).Value = Mid(c.Formula, 2, (Len(c.Formula)))
     '放置包含公式的工作表名在列B中
     .Range("B" & endRow).Value = sht.Name
     '放置去除了绝对符号$的公式所在单元格地址于列C中
     .Range("C" & endRow).Value = Application.WorksheetFunction.Substitute(c.Address, "$", "")
   End With
 Next c
 On Error GoTo 0
 '自动调整列宽
 rSheet.Columns("A:C").AutoFit
End Sub

注意,程序假设放置公式的工作表第一行是标题行。

0 人点赞