VBA拆分算术表达式
发布时间:2022-02-26 05:03:01
将算术表达式拆分成组成该表达式的数学元素,例如将表达式2+(19-4)/3拆分成
如何使用VBA代码实现呢?
关键点:如何将表达式中超过1位的数字提取出来,例如上面示例中的数字19。
解决方法:使用一个临时变量判断是否是数字,同时利用这个变量来计算该数字的位数,然后使用该变量作为遍历条件来获取该数字。
VBA代码:
Sub SplitExpress()
‘存储表达式的每个字符
Dim var1()
‘存储表达式中各元素(符号和数字)
Dim var2()
‘表达式
Dim express As String
‘循环变量
Dim i As Long
Dim j As Long
‘计数,用来确定动态数组大小
Dim iCount As Long
‘表达式长度
Dim lLen As Long
‘临时变量,用来存储数字元素中单个数字数
Dim temp As Long
‘将相邻的数字组合成一个数字元素
Dim str As String
‘示例表达式
‘可以换成你自已的表达式
‘或者使用输入框让用户自已输入表达式
express =”66+{[3+((5-2)*3+2)/2]+[2+(66-3)/3]}”
lLen = Len(express) + 1
‘重定义数组大小为表达式长度
‘注意将数组长度增1
‘以免没有括号时漏掉表达式最后一个数字
ReDim var1(1 To lLen)
‘将表达式拆分单个字符
For i = 1 To lLen
var1(i) = Mid(express,i, 1)
Next i
temp = 0
‘遍历表达式
For i = 1 To lLen
‘如果相邻字符是数字,则将其取出并连接成一个数字
If var1(i) Like”[0-9]” Then
temp = temp + 1
ElseIf temp > 0Then
For j = 1 To temp
str = str& var1(i – temp + j – 1)
Next j
iCount = iCount +1
ReDim Preserve var2(1To iCount)
var2(iCount) = str
temp = 0
str = “”
End If
‘如果是符号,则直接存放
Select Case var1(i)
Case”{“, “[“, “(“, “)”, “}”,”]”, “+”, “-“, “*”, “/”
iCount = iCount+ 1
ReDim Preservevar2(1 To iCount)
var2(iCount) =var1(i)
End Select
Next i
‘将组成表达式的各元素重新组合
‘验证结果是否正确
For i = LBound(var2) ToUBound(var2)
str = str &var2(i)
Next i
MsgBox “拆分的表达式为:” & str
End Sub
运行代码后的结果如下图1所示。
图1
看到了吗,地将表达式复原了!你可以将代码中的代表式换成其他算术表达式试试。
下面是代码的图片版:
猜你喜欢
- 下面的列表概括了“开始”选项卡上“数字”组中的可用数字格式。若要查看所有可用的数字格式,请单击“数字”旁边的对话框启动器。常规:键入数字时
- 我们学会了WORD 2010工作界面中各部分的名称及相关设置,今天我们要带大家一起来了解文档的基本操作。一、 怎么创建word文档
- word怎么横向排版,在大家平时使用word时,经常需要word横向排版,那么具体要怎么做呢?下面让小编为你带来word设置页面横向的方法,
- 在大家都觉得苹果下一个发布的一定是iOS 14.5正式版的时候,苹果还是给大家推送了 iOS 14.5 beta 8 。iOS 14.5 b
- Win10系统相对于之前经典的版本,增加了许多可以进行自定义的功能,就像在Win10系统中可以进行开始菜单的透明度调整,我们可以根据自己的喜
- 如果Excel表格中的数据很多,很有可能会出现看错行的现象,为防止看错行,我们可以隔行设置背景色。那么在Excel中如何快速隔行填充背景色或
- 今日,大家期待已久的苹果 2021 年度“返校季”优惠活动正式开启,现在高校学生购买指定型号的 Mac 或 iPad 时, 可获赠 AirP
- win10系统是目前大家最常用的电脑操作系统,最近又出了一款最新的win10版本,那就是win10 20H2版本,其功能也是非常的全面完善,
- 同事遇到一个问题,将多列不等行数据按列数据多少进行排序处理,如下图所示:
- 此前,配备面容 ID 的 iPhone 只能在纵向握持时通过面容解锁手机屏幕。在 iOS 16 以及更新版本发布后,部分较新的机型已支持横向
- 最近很多朋友都在问win10键盘关机的快捷键在哪里。有了这个快捷键,真的方便多了。我们有四种方法可以用键盘关机。所以,怎样去寻找?其实这个很
- 当我们要在Word中英文字母大小写的时候,面对着一面子的英文字母,无论是谁都会觉得头痛眼花,有没有什么方法可以实现在Word中对英文字母进行
- 今天打开word文档,居然提示:文件已被“另一用户”锁定,无法编辑。汗,就我自己用啊。。。无语了。。。请选择:1、打开只读副本2、创建本地副
- 最新由于微软针对Windows 10系统的更新又一次为用户带来了一大堆的bug,那么此次更新出现的bug是什么?就是用户在更新后使用打印机会
- Windows系统的自动更新是为了让用户及时的使用最新补丁修复当前版本的一些问题,这样可以让系统整体更完善,但是windows的自动更新是后
- Word2007插入的图片怎么设置文字环绕方式?word文档中插入了一个图片,感觉很突兀,想要给图片设置文字环绕方式,该怎么设置呢?请看下文
- word2010的文档以文件形式存放于磁盘中,其文件的默认扩展名是什么?word2010的文档以文件形式存放于磁盘中,其文件的默认扩展名是“
- 本教程教脚本之家的各位朋友如何在EXCEL2003工作表中绘制出一个哭脸?方法很简单,感兴趣的朋友欢迎前来一起分享学习如何在EXCEL中绘制
- 在word艺术字的插入方法不是很了解。一般一些初学者刚接触到word办公软件就会可能遇到这种情况。那么在word艺术字在哪?该如何去插入艺术
- 当我们使用win10操作系统时,我们相信有很多小伙伴一直在密切关注微软再次推出的win102004版本。那么win10版本2004的新特性是