Excel 2010 VBA 入门 055 计算文本公式(Evaluate)
目录
示例
实现代码
去除有规律但内容不定的文本
String函数
Evaluate方法计算表达式的值
利用VBScript的Eval函数计算表达式的值
示例
如图所示,该表为某公司从某系统导出的数据,其中,方括号内的数据仅为说明性文字。现希望能够忽略这些说明性文字计算表达式的结果,该如何用VBA完成?
计算式 | 结果 |
3+5[北京]+6*10[上海]+2[济南]*50 | 168 |
3+500[南京]/6[区域] | 86.33333333 |
3+500[南京]/7[区域] | 74.42857143 |
3+500[南京]/8[区域] | 65.5 |
3+500[南京]/9[区域]+3[aa]-5[4层] | 56.55555556 |
3+500[南京]/10[区域]+5[Abc] | 58 |
3+500[南京]/11[区域] | 48.45454545 |
3+500[南京]/12[区域] | 44.66666667 |
3+500[南京]/13[区域] | 41.46153846 |
3+500[南京]/14[区域] | 38.71428571 |
实现代码
Option ExplicitSub 计算文本表达式()Dim RowN As LongDim sFormula As String '计算式Dim lStart As Long '需要去除的字符起始位置Dim lEnd As Long '需要去除的字符的终止位置Dim lLen As Long '需要去除的字符的长度For RowN = 2 To Cells(Rows.Count, "A").End(xlUp).RowsFormula = Cells(RowN, "A").Value'当存在括号时不断循环Do While InStr(sFormula, "]") > 0'第一个“[”的位置lStart = InStr(sFormula, "[")'第一个"]"的位置lEnd = InStr(sFormula, "]")lLen = lEnd - lStart + 1'将中括号及其中的内容替换为空格Mid(sFormula, lStart, lLen) = String(lLen, " ")Loop'Evaluate方法计算表达式的值Cells(RowN, "B").Value = Application.Evaluate(sFormula)NextEnd Sub
去除有规律但内容不定的文本
当需要去除或替换有规律但是内容不定的文本时,采用的方法常常是找到需要去除的文本的起点位置和终点位置,然后利用MID语句或其他文本函数及文本连接运算去除该文本。
本例中,需要去除的字符是方括号([])以及其括起的字符。因而利用Instr函数找到左方括号所在的位置,以及右方括号所在的位置,然后计算其长度,以相等长度的空格文本用MID语句将其替换。
String函数
VBA的String函数与工作表函数Rept相同,可以返回指定长度的重复字符串,其语法为:
String(number,character)
其中,参数number为接受长整型的表达式,表示返回的是字符串长度。
参数character为所需要重复的字符。当character长度超过1时,String仅将character参数的第1个字符进行重复。如以下表达式将返回"AA”。
String(2,"ABC")
Evaluate方法计算表达式的值
利用Evaluate方法除了可以表示单元格外,还可以用来计算算术表达式的值。Evaluate方法将会忽略表达式中的空格而单纯地计算算术表达式的值,但是算术表达式的字符长度不能超过255,否则将会发生错误。
利用VBScript的Eval函数计算表达式的值
由于Evaluate方法有诸多限制,开发者可以使用VBScript的 Eval函数对表达式的值进行计算。参考如下代码,该代码可以计算Expression表达式,并将结果赋值给GetValue变量。
With CreateObject("MSScriptControl.ScriptControl").Language = “vbscript"GetValue = .Eval (Expression)
End With
Excel 2010 VBA 入门 055 计算文本公式(Evaluate)相关推荐
- Excel 2010 VBA 入门 034 创建图片批注
目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...
- Excel 2010 VBA 入门 001显示开发工具选项卡
目录 VBA简介 宏简介 显示"开发工具"选项卡 VBA简介 Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附 ...
- Excel 2010 VBA 入门 006 设置宏安全性
目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. 步骤2在"信任中心"的"宏设置"选项中 ...
- Excel 2010 VBA 入门 028 向单元格输入公式
目录 示例: 利用Formula属性给单元格输入公式 Formula属性和Value属性的联系与区别 利用FormulaR1C1属性给单元格输入公式 R1C1引用样式的规则 (1)"绝对引用 ...
- Excel 2010 VBA 入门 047 判断某文本中是否包含指定字符(Instr)
示例 如图所示,该表为某公司采购清单.由于在记录时并未标记供应商来源地,只能通过E列供应商名称中寻找.现需要筛选出所有上海的供应商采购记录,该如何用VBA实现? 商品编码 入库日期 部门 业务员 供应 ...
- Excel 2010 VBA 入门 048 批量替换文本中的指定字符(replayce函数和方法)
目录 示例: 实现代码 Replace函数 单元格对象的Replace方法 使用Replace方法实现代码 示例: 如图所示,该表为某公司商品编码.由于商品目录升级,现商品编码中以"GXGY ...
- Excel 2010 VBA 入门 076 数据处理之计算个人所得税
目录 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) 代码 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) (非居民个人工资.薪金所得,劳务报酬所得,稿 ...
- Excel 2010 VBA 入门 139 创建工作簿级的自定义选项卡
目录 题 码 Excel工作簿的实质 XML简介 customUI.xml 常用的功能区控件及通用属性 tabs控件和tab控件 group控件 命令控件 内置控件的ID customUI.xml中控 ...
- Excel 2010 VBA 入门 129 利用窗体向工作表中录入数据
目录 题 码 窗体控件与工作表的交互 窗体的事件 窗体中ControIs集合访问控件 控件的排列 使用控件数组进行赋值 题 如图所示,该表为某公司订单记录表,其中所有的列都是必填的,订单编号为自动生成 ...
最新文章
- Facebook 万字长文:AI 模型全部迁移至 PyTorch 框架
- android测试点整理
- css基础 设置链接颜色
- C# MySQL数据库的备份 还原 初始化
- 网站降低用户跳出率的常见技巧有哪些?
- 待办事项桌面插件_求一款安卓手机上可添加小目标的桌面便签软件?
- 二叉树(中序遍历)非递归
- Thinkphp5 请求报错
- codevs 1052 地鼠游戏
- 八分音符(频率)卷积算子 Octave Convolution
- HBase的Shell命令和JavaAPI
- 阿里云-设备影子概览
- “Null 是价值十亿美元的错误!”
- 【重点!DP】LeetCode 639. Decode Ways II
- iOS-更新CocoaPods出现错误 提示重复文件
- eclipse 连 mysql 数据库 jdbc下载
- 金蝶移动bos开发教程_移动BOS开发技巧
- 从零开始学习CANoe(四)—— 设计panel
- 手机处理器天梯图2021
- 信号灯管理服务器CPU型号,正文-新华三集团-H3C