java读取excel并替换占位符_正则表达式 – 有没有一种简单的方法来替换Excel中的占位符?...
没有完全测试,但这样的帮助?选择具有公式的单个单元格并运行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中的占位符?...相关推荐
- java按两列输出_有没有一种简单的方法可以将两列输出到Java中的控制台? - java...
如标题所述,是否有一种简单的方法可以将两列输出到Java中的控制台? 我知道\t,但是在使用printf时,我还没有找到基于特定列进行空间分配的方法. 参考方案 使用宽度和精度说明符,将其设置为相同的 ...
- kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用
kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...
- Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n
Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...
- python读文件readlines_Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n...
Python 三种读文件方法read(), readline(), readlines()及去掉换行符\n 首先, 让我们看下数据demo.txt, 就两行数据. 35durant teamGSW 1 ...
- 两种简单的网页图片替换方法
网站具体是由图片.文字.视频组成的,现在搭建网站,一般都是利用模板建站的方式去做,那么我们拿到模板以后,想要去对这个模板一些图片位置进行修改,应该怎么去做呢?那么基于wordpress的模板建站方式, ...
- excel办公常用的宏_让领导看傻!精美168套办公常用excel模板免费领
HR们面试的时候,是不是经常看到应聘者的简历上技能那一栏写着精通Excel.PPT等办公技能? 你知道Excel用到什么程度才算精通吗? 能够用excel做表格就算精通吗? 还是要能够熟练使用各种函数 ...
- php输出csv和excel两种简单的方法,PHP导出csv和excel以及word的方法 | kTWO-个人博客...
摘要 本文讲述的是php中导出CSV.Excel.Word的三种实现方法. 相信很多同学在开发过程中都多多少少的会遇到导出excel表.word文档等需求,本文讲的便是使用PHP在不使用第三方插件的情 ...
- 使用物理硬盘_硬盘坏道的几种非专业修复方法介绍
在使用计算机的过程中,我们最担心的就是硬盘出现故障,因为一旦硬盘出现故障就意味着我们的数据受到了严重的威胁.在诸多的硬盘故障中,硬盘坏道是最常见也是最让人头疼的故障之一了. 硬盘坏道介绍: 引起坏道的 ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
最新文章
- 灰度直方图均衡化及其实现
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
- linux一键优化脚本1.0
- C语言 双向链表的增删改查
- php 引用foot.html,htmltfoot标签怎么用
- 已读服务器返回为空,钉钉考勤显示已读什么意思
- countif函数比较两列不同_VLOOKUP函数批量查找,这么长的公式你可以写出来,立马加薪...
- 字符串t1t2t3t4
- 中国石油计算机第三次在线作业,最新中国石油大学北京计算机应用基础第三次在线作业1(10页)-原创力文档...
- 二叉树层序遍历算法实现
- 文言文编程可以编译成PHP吗,PSTK项目:文言文也能编程?大四学生发明文言文编程语言...
- zTree 树形中的搜索定位节点
- matlab相对误差,相对误差与相对误差限定义-精品课程-山东科技大学.PPT
- BZOJ2794: [Poi2012]Cloakroom
- 大学四年,从小白到大神,全网最硬核算法学习攻略,不接受反驳
- 转换句子的首字母为大小写(Jaden Casing Strings)
- 【计算机科学基础】Unicode与UTF-8
- rk3288 8080lcd时序分析和TFT-RGB接口
- 科研工具篇|看完之后能提高你80%的科研工作效率
- 支付宝花呗额度一直不涨?阿里老员工说出原因,亲测有效