Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >VBA程序:列出指定工作表中的所有公式

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

作者头像
fanjy
发布于 2024-01-15 02:11:05
发布于 2024-01-15 02:11:05
23100
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:VBA

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

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用VBA创建相关联的数据有效性列表
如下图1所示,当选择工作表Sheet2列A中的单元格下拉列表项后,其相邻列B中的单元格下拉列表项会与列A中选择项相关联,也就是说,列A中选择不同的项,列B中也会呈现相应的项。
fanjy
2024/06/18
1980
使用VBA创建相关联的数据有效性列表
VBA汇总一个文件多工作表到一个表
VBA汇总一个文件多工作表到一个表 . 今天在工作中,同事传来一个excel文件中有很多个工作表,要我汇总,每个表的标题是一样的,虽然一个一个复制、粘贴是可以做到的,但时间很长,所以把以前学习一个代码,拿来用一下,代码找了很久才找到,想想还是把他放在这里好一点,以后查找方便 . 把多个工作表的内容汇总到一个“汇总”表中 Sub sheets_to_one() Dim mysht As Worksheet, rng As Range, sht As Worksheet Dim
哆哆Excel
2022/10/31
5520
3分钟写个VBA:Excel工作簿所有子表数据一键汇总
今天同事问我,他要汇总一个工作簿里面十几张子表里面的数据到同工作簿的汇总表里面,怎么操作比较快?然后我就想到了VBA,3分钟给他写(录)了一个宏,一键完成所有数据汇总。
朱小五
2021/12/09
3.9K0
3分钟写个VBA:Excel工作簿所有子表数据一键汇总
VBA实战技巧01: 在代码中引用动态调整单元格区域的5种方法
在VBA代码中,经常要引用单元格数据区域并对其进行操作。然而,如果对数据区域采用“硬编码”地址,那么当该区域大小变化时,必须修改相应的引用该区域的代码。本文整理了可以动态引用数据区域的5种方法,供编写代码时参考。
fanjy
2020/02/12
4.8K0
仿Excel的撤销功能
这是在www.vbaexpress.com中看到的一个示例,实现了自己以前想做而未做的事情。
fanjy
2024/05/13
1850
仿Excel的撤销功能
VBA拆分工作簿示例
如下图1所示,列B中有一系列重复数据,想要将每个重复的数据所在的行放到一个新工作簿并以该数据作为工作簿名。例如,列B中为7890的所有行复制到一个新工作簿并命名为7890.xlsx。
fanjy
2024/06/19
1380
VBA拆分工作簿示例
小游戏2048
用Excel VBA来实现的手机上玩的那种组合数字的小游戏。 Public Row As Integer, Col As Integer '偏移 Di
xyj
2020/07/28
7740
小游戏2048
EXCEL VBA语句集300
        定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示  Option Compare Text ‘字符串不区分大小写  Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能  工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) ActiveWorkbook.name ‘返回活动工作薄的名称 (14) ThisWorkbook.Name ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化  工作表 (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后 (23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮 (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示 (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 ‘将页面设置更改为横向 (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径 ActiveSheet.PageSetup.Le
Tony老师
2020/03/05
2K0
ExcelVBA End属性查找”最后”的单元格
'等同于按键 (End+向上键、End+向下键、End+向左键、End+向右键),或者CTRL+上下左右
哆哆Excel
2022/10/25
1.6K0
ExcelVBA End属性查找”最后”的单元格
Excel应用实践11:合并多个工作簿中的数据——示例2
在上一篇文章《Excel应用实践10:合并多个工作簿中的数据》中,我们使用代码快速合并超过50个Excel工作簿文件,然而,如果要合并的工作簿中工作表的名称不相同,但位于每个工作簿的第1个工作表;并且,要在合并后的工作表的第1列中输入相对应的工作簿文件名,以便知道合并后的数据来自哪个工作簿文件。
fanjy
2019/07/19
2.8K0
VBA高级筛选应用:拆分或更新子工作表
下图1所示是一个简单的示例数据集。这里已经突出标示了Dept A(橙色),因为这是我们可能希望为这个部门创建新工作表,然而,如果已经有一个标题为“A”的工作表,那么就不会创建新工作表,只会将数据添加到现有工作表中。其中心思想是创建一个唯一的工作表,其中包含与部门相关的数据。因此,这里会为A、B和C分别创建一个工作表。如果添加了任何新的部门,则也为这些部门创建新的工作表。
fanjy
2022/11/16
1.6K0
VBA高级筛选应用:拆分或更新子工作表
ExcelVBA从工作簿中查询多个姓名并复制出整行数据
工作中用的代码 Sub ExcelVBA从工作簿中查询多个姓名并复制出整行数据() Dim outFile As String, inFile As String Dim outWb As Workbook, mysht As Worksheet, tempsht As Worksheet, t_arr(1 To 30) Dim SearchRange As Range Dim LastRow As Integer, arr, FindStr As String, i
哆哆Excel
2022/10/31
1.7K0
ExcelVBA 批量生成工作表并随机生成成绩表
'有时候我的制作教程的过程中需要一些随机的数据,如成绩表,有时也需要很多表,不想一个一个建立工作表,所以为了方便
哆哆Excel
2022/10/25
8290
ExcelVBA 批量生成工作表并随机生成成绩表
VBA用字典批量查找社保数据
【问题】我们知道社保导出的数据是很多合并的单元格,如果要查找一个数据都要找很久,如果数量多了更多费时,基于以上问题,特用VBA设计一个批量查找的程序。
哆哆Excel
2022/10/25
7110
VBA用字典批量查找社保数据
使用VBA合并工作表
从多个Excel工作表(子工作表)中获取信息,并用子工作表中的所有数据填充汇总工作表(父工作表),这是很多朋友会提到的常见要求。如果部分数据是从添加新工作表到工作簿中而增长的,那么获得这些数据的汇总非常方便,例如,添加单独的工作表,包含新月份的数据。
fanjy
2022/11/16
2K0
使用VBA合并工作表
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
45.9K0
Excel VBA编程
对象Workbook Worksheet Range的使用
讲再多都不如直接使用来的快,今天使用1个具体的例子来使用Workbook 、Worksheet、Range对象。
xyj
2020/07/28
1.8K0
对象Workbook Worksheet Range的使用
搜索并汇总多个工作表中的数据
下面的示例搜索工作簿中除工作表“汇总表”外的多个工作表中的数据,将满足条件的数据所在行复制到指定工作表。
fanjy
2024/07/05
1920
搜索并汇总多个工作表中的数据
VBA代码:将多个文本文件合并到当前工作表
下面分享在vbaexpress.com中收集的几段代码,用于合并文本文件并将其放置在当前工作表中。
fanjy
2024/06/04
2090
VBA代码:将多个文本文件合并到当前工作表
Excel实战技巧53: 在VBA代码中使用工作表公式更有效地实现查找
在工作表中查找值是很常见的操作,我们可以使用VLOOKUP函数、MATCH函数、INDEX函数等来查找值。当使用VBA代码在大量的数据中进行查找操作时,灵活运用工作表公式,往往能够提高效率。
fanjy
2019/09/19
2.8K0
Excel实战技巧53: 在VBA代码中使用工作表公式更有效地实现查找
相关推荐
使用VBA创建相关联的数据有效性列表
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文