ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 210|回复: 7

[求助] 替换公式中的工作表名称,但是带工作簿引用的不替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-20 09:05 | 显示全部楼层 |阅读模式
想请教一个替换公式中工作表引用的问题,看看如何处理,不能用程序替换:
有些公式是,“=Sheet1!A1“、="B5+Sheet1!A2"这样的引用方式,有些是“=[工作簿.xlsx]Sheet1!A1“,这样的方式
只想把“Sheet1“,变成“Sheet2“,但是带工作簿引用的不替换,即“[工作簿.xlsx]Sheet1“,这种不能替换,请教怎么操作?


替换工作表.zip

19.01 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-8-20 09:56 | 显示全部楼层
本帖最后由 huaichuan1 于 2024-8-20 09:57 编辑

分批查找替换呗
1、“=[工作簿.xlsx]Sheet1!A1“ 先找这样的,查找[工作簿.xlsx]Sheet1! 替换成[工作簿.xlsx]Sheetaaa1!
2、“=Sheet1!A1“ 查找这样的直接替换成你想要的样子。
3、[工作簿.xlsx]Sheetaaa1! 在吧他还原就行了。

过程中数据会报错,不用担心,全部替换完了数据就正常了。切记 先备份在替换。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-20 10:28 | 显示全部楼层
huaichuan1 发表于 2024-8-20 09:56
分批查找替换呗
1、“=[工作簿.xlsx]Sheet1!A1“ 先找这样的,查找[工作簿.xlsx]Sheet1! 替换成[工作簿.xl ...

先找一个过渡的替代者,再替换,再把过渡的替换回来,确实是一个不错的方案

TA的精华主题

TA的得分主题

发表于 2024-8-20 11:55 | 显示全部楼层
LIUZHU 发表于 2024-8-20 10:28
先找一个过渡的替代者,再替换,再把过渡的替换回来,确实是一个不错的方案

这其实是个笨方法,我不会vba 不知道vba层面 有没有好的解决方案,只是我这个方案比较简单易懂。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-20 14:12 | 显示全部楼层
huaichuan1 发表于 2024-8-20 11:55
这其实是个笨方法,我不会vba 不知道vba层面 有没有好的解决方案,只是我这个方案比较简单易懂。

VBA有方法,而且,VBA可以用正则表达式匹配

TA的精华主题

TA的得分主题

发表于 2024-8-20 17:36 | 显示全部楼层
1.按ALT+F11进入VBA窗口

2.双击左边ThisWorkbook,输入:
  1. <blockquote>Sub ReplaceSheetReferences()
复制代码
3.按ALT+Q,退出VBA窗口
4.按ALT+F8,运行VBA,更改成功

注:
Set ws = ThisWorkbook.Sheets("Sheet1") '    中的"Sheet1"为指定工作表,可以更改
formulaText = Replace(formulaText, "Sheet1", "Sheet2")    这一段为要替换的值,可以更改

TA的精华主题

TA的得分主题

发表于 2024-8-20 18:45 | 显示全部楼层
Excel_muke 发表于 2024-8-20 17:36
1.按ALT+F11进入VBA窗口

2.双击左边ThisWorkbook,输入:

不知道为什么被吞了一部分代码

  1. Sub ReplaceSheetReferences()
  2.     Dim ws As Worksheet
  3.     Dim cell As Range
  4.     Dim formulaText As String

  5.     ' 指定要操作的工作表
  6.     Set ws = ThisWorkbook.Sheets("Sheet1") ' 替换为你要操作的工作表

  7.     ' 遍历工作表中的所有单元格
  8.     For Each cell In ws.UsedRange
  9.         If cell.HasFormula Then
  10.             formulaText = cell.Formula
  11.             
  12.             ' 如果公式中不包含外部工作簿引用,则替换
  13.             If InStr(1, formulaText, "[") = 0 Then
  14.                 formulaText = Replace(formulaText, "Sheet1", "Sheet2")
  15.                 cell.Formula = formulaText
  16.             End If
  17.         End If
  18.     Next cell

  19.     MsgBox "替换完成", vbInformation
  20. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-8-20 21:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
直接两次替换
=Sheet1替换成=Sheet2;+Sheet1替换成+Sheet2
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-23 18:22 , Processed in 0.045305 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表