没有完全测试,但这样的帮助?选择具有公式的单个单元格并运行Sample.我没有做任何错误处理.我假设ActiveCell将有一个公式.我也会按照你在上面的评论中说的那样,你的公式将没有命名范围

Dim sformula As String

Dim sh As String

Sub Sample()

Dim cell As Range, c As Range

'~~> This is what you want to append

sh = "Sheet1!"

'~~> Store the formula in a variable

sformula = ActiveCell.Formula

Debug.Print sformula

'~~> Get the precedents

Set cell = ActiveCell.Precedents

'~~> Loop though them

For Each c In cell

ReplaceAddress c.Address '~~> $A$1

ReplaceAddress c.Address(RowAbsolute:=False) '~~> $A1

ReplaceAddress c.Address(ColumnAbsolute:=False) '~~> A$1

ReplaceAddress c.Address(RowAbsolute:=False, ColumnAbsolute:=False) '~~> A1

Next

Debug.Print sformula

End Sub

Function ReplaceAddress(s As String) As String

Dim pos As Long

pos = InStr(1, sformula, s)

Do While pos > 0

If pos = 1 Then

sformula = sh & sformula

ElseIf pos > 1 Then

'~~> Various checks for "!","$" and ":"

If Mid(sformula, pos - 1, 1) <> "!" And Mid(sformula, pos - 1, 1) <> "$" And _

Mid(sformula, pos - 1, 1) <> ":" And Mid(sformula, pos - 2, 1) <> ":" Then

sformula = Left(sformula, pos - 1) & sh & Mid(sformula, pos)

End If

End If

'~~> Find next occurance

pos = InStr(pos + 1, sformula, s)

Loop

ReplaceAddress = sformula

End Function

各种测试

之前:

=IF(OR($A1="xyz",$B1="abc",$C5="dmz"),1,0)

后:

=IF(OR(Sheet1!$A1="xyz",Sheet1!$B1="abc",Sheet1!$C5="dmz"),1,0)

之前:

=VLOOKUP(K4,N10:Q18,1,0)

后:

=VLOOKUP(Sheet1!K4,Sheet1!N10:Q18,1,0)

一个稍微复杂的测试

之前:

=IF(G4>MAX($D$4:$D$8),"N/A",INDEX($B$4:$B$8,INDEX(MATCH(G4,$C$4:$C$8,1),0,0),0))

后:

=IF(Sheet1!G4>MAX(Sheet1!$D$4:$D$8),"N/A",INDEX(Sheet1!$B$4:$B$8,INDEX(MATCH(Sheet1!G4,Sheet1!$C$4:$C$8,1),0,0),0))

跟进评论

用这个

Sub Sample()

Dim cell As Range, c As Range

'~~> This is what you want to append

sh = "Sheet1!"

'~~> Store the formula in a variable

sformula = ActiveCell.Formula

Debug.Print sformula

'~~> Get the precedents

Set cell = ActiveCell.Precedents

'~~> Loop though them

For Each c In cell

ReplaceAddress c.Address '~~> $A$1

ReplaceAddress c.Address(RowAbsolute:=False) '~~> $A1

ReplaceAddress c.Address(ColumnAbsolute:=False) '~~> A$1

ReplaceAddress c.Address(RowAbsolute:=False, ColumnAbsolute:=False) '~~> A1

sformula = Replace(sformula, c.Address(RowAbsolute:=False), c.Address)

sformula = Replace(sformula, c.Address(ColumnAbsolute:=False), c.Address)

sformula = Replace(sformula, c.Address(RowAbsolute:=False, ColumnAbsolute:=False), c.Address)

Next

Do While InStr(1, sformula, "$$")

sformula = Replace(sformula, "$$", "$")

Loop

Debug.Print sformula

End Sub

Function ReplaceAddress(s As String) As String

Dim pos As Long

pos = InStr(1, sformula, s)

Do While pos > 0

If pos = 1 Then

sformula = sh & sformula

ElseIf pos > 1 Then

'~~> Various checks for "!","$" and ":"

On Error Resume Next

If Mid(sformula, pos - 1, 1) <> "!" And Mid(sformula, pos - 1, 1) <> "$" And _

Mid(sformula, pos - 1, 1) <> ":" And Mid(sformula, pos - 2, 1) <> ":" Then

sformula = Left(sformula, pos - 1) & sh & Mid(sformula, pos)

End If

On Error GoTo 0

End If

'~~> Find next occurance

pos = InStr(pos + 1, sformula, s)

Loop

ReplaceAddress = sformula

End Function

java读取excel并替换占位符_正则表达式 – 有没有一种简单的方法来替换Excel中的占位符?...相关推荐

  1. java按两列输出_有没有一种简单的方法可以将两列输出到Java中的控制台? - java...

    如标题所述,是否有一种简单的方法可以将两列输出到Java中的控制台? 我知道\t,但是在使用printf时,我还没有找到基于特定列进行空间分配的方法. 参考方案 使用宽度和精度说明符,将其设置为相同的 ...

  2. kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用

    kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...

  3. Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n

    Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...

  4. python读文件readlines_Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n...

    Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...

  5. 两种简单的网页图片替换方法

    网站具体是由图片.文字.视频组成的,现在搭建网站,一般都是利用模板建站的方式去做,那么我们拿到模板以后,想要去对这个模板一些图片位置进行修改,应该怎么去做呢?那么基于wordpress的模板建站方式, ...

  6. excel办公常用的宏_让领导看傻!精美168套办公常用excel模板免费领

    HR们面试的时候,是不是经常看到应聘者的简历上技能那一栏写着精通Excel.PPT等办公技能? 你知道Excel用到什么程度才算精通吗? 能够用excel做表格就算精通吗? 还是要能够熟练使用各种函数 ...

  7. php输出csv和excel两种简单的方法,PHP导出csv和excel以及word的方法 | kTWO-个人博客...

    摘要 本文讲述的是php中导出CSV.Excel.Word的三种实现方法. 相信很多同学在开发过程中都多多少少的会遇到导出excel表.word文档等需求,本文讲的便是使用PHP在不使用第三方插件的情 ...

  8. 使用物理硬盘_硬盘坏道的几种非专业修复方法介绍

    在使用计算机的过程中,我们最担心的就是硬盘出现故障,因为一旦硬盘出现故障就意味着我们的数据受到了严重的威胁.在诸多的硬盘故障中,硬盘坏道是最常见也是最让人头疼的故障之一了. 硬盘坏道介绍: 引起坏道的 ...

  9. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

最新文章

  1. 灰度直方图均衡化及其实现
  2. Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
  3. linux一键优化脚本1.0
  4. C语言 双向链表的增删改查
  5. php 引用foot.html,htmltfoot标签怎么用
  6. 已读服务器返回为空,钉钉考勤显示已读什么意思
  7. countif函数比较两列不同_VLOOKUP函数批量查找,这么长的公式你可以写出来,立马加薪...
  8. 字符串t1t2t3t4
  9. 中国石油计算机第三次在线作业,最新中国石油大学北京计算机应用基础第三次在线作业1(10页)-原创力文档...
  10. 二叉树层序遍历算法实现
  11. 文言文编程可以编译成PHP吗,PSTK项目:文言文也能编程?大四学生发明文言文编程语言...
  12. zTree 树形中的搜索定位节点
  13. matlab相对误差,相对误差与相对误差限定义-精品课程-山东科技大学.PPT
  14. BZOJ2794: [Poi2012]Cloakroom
  15. 大学四年,从小白到大神,全网最硬核算法学习攻略,不接受反驳
  16. 转换句子的首字母为大小写(Jaden Casing Strings)
  17. 【计算机科学基础】Unicode与UTF-8
  18. rk3288 8080lcd时序分析和TFT-RGB接口
  19. 科研工具篇|看完之后能提高你80%的科研工作效率
  20. 支付宝花呗额度一直不涨?阿里老员工说出原因,亲测有效

热门文章

  1. 拆解交易系统--异地多活
  2. MVC框架内容-控制器
  3. 顺序表-删除所有元素值为x结点(相等加一,不等前移k)
  4. 04flex弹性布局子项常见属性总结
  5. Python中的特殊成员和魔法方法
  6. Python自然语言处理实战
  7. android html文字垂直居中,Android 浏览器文本垂直居中问题
  8. 有了ROS这架车,SLAM之路不再遥远!
  9. 招聘|腾讯机器人实验室语义视觉方向(实习+社招)
  10. spring中controller与jsp之间的那些事儿