本文作者:office教程网

VBA拆分算术表达式

office教程网 2024-10-11 12:48:54
后台-系统设置-扩展变量-手机广告位-内容正文顶部
摘要:

将算术表达式拆分成组成该表达式的数学元素,例如将表达式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

excel图表怎么发挥IF函数的威力

IF函数应该是最常用的Excel函数之一了,在公式中经常能够看到她的“身影”。IF函数的基本使用如图1所示。 图1 IF函数之美 IF函数是一个逻辑函数,通过判断提供相应操作,让Excel更具智能。 然而,在数组公式中使用IF函数,能够执行一些较复杂的操作,充分发挥IF函数的威力。 运用IF函数进行连续测

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

看到了吗,地将表达式复原了!你可以将代码中的代表式换成其他算术表达式试试。

下面是代码的图片版:

小而美的函数之SMALL函数

SMALL函数求一组数值中第几小的数值,其第1个参数指定数据组,第2个参数指定要求的第几小的值,其基本用法如图1所示。 图1 SMALL函数之美 SMALL函数的原理很简单,但将其组合在公式中,能够帮助我们按顺序获取数据,这可能就是SMALL函数的美妙之处。 结合ROW函数对数据排序 如图2所示,在单元格

后台-系统设置-扩展变量-手机广告位-内容正文底部
未经允许不得转载:

作者:office教程网,原文地址:VBA拆分算术表达式发布于2024-10-11 12:48:54
转载或复制请以超链接形式并注明出处 演示站

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

留言与评论(共有 0 条评论)
   
验证码: