目录

示例

实现代码

去除有规律但内容不定的文本

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)相关推荐

  1. Excel 2010 VBA 入门 034 创建图片批注

    目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...

  2. Excel 2010 VBA 入门 001显示开发工具选项卡

    目录 VBA简介 宏简介 显示"开发工具"选项卡 ​ VBA简介 Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附 ...

  3. Excel 2010 VBA 入门 006 设置宏安全性

    目录 操作方法 步骤1单击"开发工具"选项卡中的"宏安全性"按钮,如图所示. ​ 步骤2在"信任中心"的"宏设置"选项中 ...

  4. Excel 2010 VBA 入门 028 向单元格输入公式

    目录 示例: 利用Formula属性给单元格输入公式 Formula属性和Value属性的联系与区别 利用FormulaR1C1属性给单元格输入公式 R1C1引用样式的规则 (1)"绝对引用 ...

  5. Excel 2010 VBA 入门 047 判断某文本中是否包含指定字符(Instr)

    示例 如图所示,该表为某公司采购清单.由于在记录时并未标记供应商来源地,只能通过E列供应商名称中寻找.现需要筛选出所有上海的供应商采购记录,该如何用VBA实现? 商品编码 入库日期 部门 业务员 供应 ...

  6. Excel 2010 VBA 入门 048 批量替换文本中的指定字符(replayce函数和方法)

    目录 示例: 实现代码 Replace函数 单元格对象的Replace方法 使用Replace方法实现代码 示例: 如图所示,该表为某公司商品编码.由于商品目录升级,现商品编码中以"GXGY ...

  7. Excel 2010 VBA 入门 076 数据处理之计算个人所得税

    目录 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) 代码 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) (非居民个人工资.薪金所得,劳务报酬所得,稿 ...

  8. Excel 2010 VBA 入门 139 创建工作簿级的自定义选项卡

    目录 题 码 Excel工作簿的实质 XML简介 customUI.xml 常用的功能区控件及通用属性 tabs控件和tab控件 group控件 命令控件 内置控件的ID customUI.xml中控 ...

  9. Excel 2010 VBA 入门 129 利用窗体向工作表中录入数据

    目录 题 码 窗体控件与工作表的交互 窗体的事件 窗体中ControIs集合访问控件 控件的排列 使用控件数组进行赋值 题 如图所示,该表为某公司订单记录表,其中所有的列都是必填的,订单编号为自动生成 ...

最新文章

  1. Facebook 万字长文:AI 模型全部迁移至 PyTorch 框架
  2. android测试点整理
  3. css基础 设置链接颜色
  4. C# MySQL数据库的备份 还原 初始化
  5. 网站降低用户跳出率的常见技巧有哪些?
  6. 待办事项桌面插件_求一款安卓手机上可添加小目标的桌面便签软件?
  7. 二叉树(中序遍历)非递归
  8. Thinkphp5 请求报错
  9. codevs 1052 地鼠游戏
  10. 八分音符(频率)卷积算子 Octave Convolution
  11. HBase的Shell命令和JavaAPI
  12. 阿里云-设备影子概览
  13. “Null 是价值十亿美元的错误!”
  14. 【重点!DP】LeetCode 639. Decode Ways II
  15. iOS-更新CocoaPods出现错误 提示重复文件
  16. eclipse 连 mysql 数据库 jdbc下载
  17. 金蝶移动bos开发教程_移动BOS开发技巧
  18. 从零开始学习CANoe(四)—— 设计panel
  19. 手机处理器天梯图2021
  20. 信号灯管理服务器CPU型号,正文-新华三集团-H3C

热门文章

  1. iphone11屏比例_iPhone11屏幕尺寸
  2. 基于React全家桶开发「网易云音乐PC」项目实战(四)
  3. 便利蜂社招一年经验Java岗面经(2018.6)
  4. Android简易录音机
  5. 【苹果家庭推群发】更新3.2更换证书连接到Apple Push Server
  6. js 设置beforeSend,实现跨域访问
  7. 2022性价比最高的千元手机
  8. python hashlib模块_Python之hashlib模块的使用
  9. 视频如何拼接?建议收藏这些方法
  10. udp可靠传输那些事之游戏篇