当前位置: 首页 > news >正文

VBA之正则表达式(44)-- 拆分商品和规格

实例需求:商品组清单保存在A列中,现需要将其拆分为商品名称,保存在从B列开始的后续单元格中,部分商品包含规格,并且多种规格属性使用了逗号分隔,因此无法直接使用Excel分列功能完成数据拆分。

在这里插入图片描述

示例代码如下。

Sub Demo()Dim objRegExp as ObjectDim lngLstRow As LongDim iCol As Integer, i As IntegerDim sText As StringSet objRegExp = CreateObject("vbscript.regexp")objRegExp.IgnoreCase = TrueobjRegExp.Global = TrueobjRegExp.Pattern = "[一-龟]+((.*?))?"lngLstRow = [a1].End(xlDown).RowFor i = 2 To lngLstRowsText = Trim(Cells(i, 1))Set objMHs = objRegExp.Execute(sText)iCol = 2For Each objMH In objMHsCells(i, iCol) = objMHiCol = iCol + 1NextNextSet objRegExp = Nothing
End Sub

【代码解析】
第6行代码创建正则对象。
第7行代码设置正则匹配忽略字符大小写。
第8行代码设置正则全局匹配。
第9行代码设置正则匹配模式。

正则表达式说明
[一-龟]+匹配一个或者多个中文字符
((.*?))?匹配全角括号包裹的任意字符,可以不包含此部分

匹配结果如下图所示。
在这里插入图片描述

第11行代码清空保存结果的单元格区域。
第12~20行代码循环处理数据。
第13行代码读取A列单元格内容。
第14行代码执行正则匹配。
第15行代码设置保存拆分结果的起始列。
第16~19行代码循环读取匹配结果,写入工作表单元格。
第21行代码释放对象变量占用的系统资源。

http://www.lryc.cn/news/219347.html

相关文章:

  • 听GPT 讲Rust源代码--library/std(13)
  • 计算机视觉任务图像预处理之去除图像中的背景区域-------使用连通域分析算法(包含完整代码)
  • SurfaceFlinger的硬件Vsync深入分析-千里马android framework车机手机系统开发
  • 力扣160. 相交链表
  • 操作系统学习与思考
  • C++笔记之动态数组的申请和手动实现一个简单的vector
  • 答题测评考试小程序的效果如何
  • 树上贪心+生成树贪心:1104T3
  • MySQL进阶之性能优化与调优技巧
  • MySQL EXPLAIN查看执行计划
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(最终篇)
  • redis教程 二 redis客户端Jedis使用
  • 【数据开发】大数据平台架构,Hive / THive介绍
  • SOEM源码解析——ecx_init_context(初始化句柄)
  • 11.Z-Stack协议栈使用
  • 设计模式—结构型模式之适配器模式
  • 【LeetCode】187. 重复的DNA序列
  • C++17中std::any的使用
  • 携手ChainGPT 人工智能基础设施 波场TRON革新 Web3 版图
  • pdfH5实现pdf预览功能
  • Redis的持久化机制
  • mac装不了python3.7.6
  • 仿写知乎日报第三周
  • Godot Best practices
  • win10 + cmake3.17 编译 giflib5.2.1
  • 【rust/esp32】初识slint ui框架并在st7789 lcd上显示
  • 精通Nginx(05)-http工作机制、指令和内置变量
  • 用于 GaN-HEMT 功率器件仿真的 TCAD 方法论
  • Web3公链之Cosmos生态的项目Celestia
  • vue+prismjs 网页代码高亮插件