Excel·VBA分列、字符串拆分

看到一篇博客《VBA,用VBA进行分列(拆分列)的2种方法》,使用VBA对字符串进行拆分

目录

    • Excel分列功能
    • 将字符串拆分为二维数组,Split函数
      • 举例
    • 将字符串拆分为一维数组,正则表达式
      • 举例

Excel分列功能

Sub 测试1()Range("a:a").TextToColumns other:=True, otherchar:=";"
End Sub

在这里插入图片描述
代码运行可以将左边拆分为右边,但分隔符只能有1个

将字符串拆分为二维数组,Split函数

分隔符只能有2个,且分隔符是有顺序的,具体看举例

Function str_split2d(ByVal source_str$, ByVal delimiter)'delimiter为分隔符数组,只能有2个元素;source_str按分隔符拆分为二维数组(数组从1开始计数)Dim s1$, s2$, srr, res, result, s, t, i&, j&, max_c&If UBound(delimiter) - LBound(delimiter) <> 1 Then Debug.Print "参数错误": Exit Functions1 = delimiter(LBound(delimiter)): s2 = delimiter(UBound(delimiter))srr = Split(source_str, s1): ReDim res(1 To UBound(srr) - LBound(srr) + 1, 1 To 10 ^ 3)For Each s In srrtemp = Split(s, s2): i = i + 1: j = 0For Each t In tempj = j + 1: res(i, j) = tNextIf j > max_c Then max_c = jNextReDim result(1 To i, 1 To max_c)  '结果数组For i = 1 To UBound(res)For j = 1 To max_cresult(i, j) = res(i, j)NextNextstr_split2d = result
End Function

举例

Sub 测试2()Dim resres = str_split2d([a1], Array(";", ","))[d1].Resize(UBound(res), UBound(res, 2)) = res
End Sub

在这里插入图片描述

将字符串拆分为一维数组,正则表达式

Split函数虽然能够拆分字符串,但是如果分隔符数量较多,那么就需要不断循环遍历分隔符,对拆分后的字符串继续进行拆分,这显然是比较麻烦的
正则表达式是处理字符串的强大工具,对于处理多个分隔符,代码较为简单
更多关于正则表达式内容详见,《Excel·VBA自定义正则表达式函数、使用》

Function 正则拆分字符串(ByVal source_str$, ByVal delimiter$)'delimiter为分隔符,source_str按分隔符拆分为一维数组(数组从1开始计数)Dim pat$, result, i&, num&pat = "[^" & delimiter & "]"  '正则匹配模式,^非With CreateObject("vbscript.regexp")  '正则表达式.Global = True.Pattern = patSet mhs = .Execute(source_str): num = mhs.CountIf num = 0 Then 正则拆分字符串 = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Array(source_str))): Exit FunctionReDim result(1 To num)For i = 0 To num - 1result(i + 1) = mhs(i).ValueNext正则拆分字符串 = resultEnd With
End Function

举例

Sub 测试3()Dim resres = 正则拆分字符串([a1], ",;")[a3].Resize(UBound(res), 1) = WorksheetFunction.Transpose(res)res = 正则拆分字符串([d1], ",;|")[d3].Resize(UBound(res), 1) = WorksheetFunction.Transpose(res)
End Sub

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/147017.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7卸载docker

菜鸟教程-常见命令&#xff1a;https://www.runoob.com/docker/docker-command-manual.html 1. 准备工作&#xff1a; 1.1 杀死docker有关的容器&#xff1a; docker kill $(docker ps -a -q)1.2 删除所有docker容器&#xff1a; docker rm $(docker ps -a -q)1.3 删除所有d…

MT8385 Android AB分区系统升级(命令模式)

AB系统分区升级使用的是update_engine,RecoverySystem 只适用于单分区的系统升级 1.解压开update.zip 可以查看到palyload的属性 2.使用ADB命令update_engine_client即可对AB分区进行升级 使用adb shell 命令进行升级 update_engine_client --payload xxx --update --hea…

机器视觉工程师如何快速停止内耗,与自己和解

十分情绪化的人&#xff0c;是无法更好的成就自我的。 真正让人疲惫的是&#xff0c;不是工作&#xff0c;不是学习&#xff0c;更不是生活。而是你自己的情绪。 我们每一天去上班&#xff0c;感觉自己像个失败者。看不见自身的光芒&#xff0c;被自己的情绪笼罩&#xff0c;饱…

【python海洋专题九】Cartopy画地形等深线图

【python海洋专题九】Cartopy画地形等深线图 水深图基础差不多了&#xff0c;可以换成温度、盐度等 本期加上等深线 本期内容 1&#xff1a;地形等深线 cf ax.contour(lon, lat, ele[:, :], levelsnp.linspace(-9000,-100,10),colorsgray, linestyles-,linewidths0.25, t…

WorldPop2000年至2020年的全中国的人口统计数据

简介 WorldPop于2013年10月启动&#xff0c;将AfriPop&#xff0c;AsiaPop和AmeriPop人口绘图项目结合在一起。它旨在为中美洲和南美洲&#xff0c;非洲和亚洲提供一个开放的空间人口统计数据集存档&#xff0c;以支持发展&#xff0c;灾害应对和卫生应用。 平台中的WorldPop数…

JAVA 注解

1 概念 Annotation&#xff08;注解&#xff09;是 Java 提供的一种对元程序中元素关联信息和元数据&#xff08;metadata&#xff09;的途径和方法。Annatation(注解)是一个接口&#xff0c;程序可以通过反射来获取指定程序中元素的 Annotation 对象&#xff0c;然后通过该 An…

亘古难题:前端开发 or 后端开发

目录 一、引言二、两者的对比分析1. 技能要求和专业知识前端开发后端开发 2. 职责和工作内容前端开发后端开发 3. 项目类型和应用领域前端开发后端开发 4. 就业前景和市场需求前端开发后端开发 三、技能转换和跨领域工作四、介绍全栈开发五、结语附、开源项目微服务商城项目前后…

react create-react-app v5配置 px2rem (暴露 eject方式)

环境信息&#xff1a; create-react-app v5 “react”: “^18.2.0” “postcss-plugin-px2rem”: “^0.8.1” 配置步骤&#xff1a; 我这个方式是 npm run eject 暴露 webpack配置的方法 1.安装 postcss-plugin-px2rem 和 lib-flexible cnpm install postcss-plugin-px2rem…

了解汽车ecu组成

常用ecu框架组成&#xff1a; BCM(body control module)-车身控制模块: 如英飞凌tc265芯片&#xff1a; 车身控制单元&#xff08;BCM&#xff09;适合应用于12V和24V两种电压工作环境&#xff0c;可用于轿车、大客车和商用车的车身控制。输入模块通过采集电路采集各路开关量和…

C++标准模板(STL)- 类型支持 (std::size_t,std::ptrdiff_t,std::nullptr_t)

对象、引用、函数&#xff08;包括函数模板特化&#xff09;和表达式具有称为类型的性质&#xff0c;它限制了对这些实体所容许的操作&#xff0c;并给原本寻常的位序列提供了语义含义。 附加性基本类型及宏 sizeof 运算符返回的无符号整数类型 std::size_t 定义于头文件 <…

安装软件显示“为了对电脑进行保护,已阻止此应用”——已解决

我是在安装Tableau时遇到的这个情况。事情是这样的&#xff1a;我先安装了一次&#xff0c;发现安装选项错了&#xff0c;我就用360软件管家删除了&#xff0c;结果就没法按照教程使用管理员身份打开了&#xff0c;提示“为了对电脑进行保护&#xff0c;已阻止此应用”。 解决…

【CFD小工坊】浅水方程的离散及求解方法

【CFD小工坊】浅水方程的离散及求解方法 前言基于有限体积法的方程离散界面通量与源项计算干-湿网格的处理数值离散的稳定性条件参考文献 前言 我们模型的控制方程&#xff0c;即浅水方程组的表达式如下&#xff1a; ∂ U ∂ t ∂ E ( U ) ∂ x ∂ G ( U ) ∂ y S ( U ) U…

【已解决】 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘.

问题描述 团队都是用mac&#xff0c;只有我自己是windows&#xff0c;启动项目一直报错 Expected linebreaks to be ‘LF‘ but found ‘CRLF‘. 但我不能因为自己的问题去改团队配置&#xff0c;也尝试过该vscode配置默认是LF还是报错 思路 看文章vscode如何替换所有文件的…

信创办公–基于WPS的EXCEL最佳实践系列 (数据整理复制粘贴)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;数据整理复制粘贴&#xff09; 目录 应用背景操作步骤1、数据查找与替换2、复制或粘贴数据3、使用自动填充工具4、将数据拆分到多列5、应用数字格式 应用背景 数据的整理复制粘贴等在日常的工作中经常使用。本章内容主要学习…

修改switch Nand无线区码 以支持高频5G 信道

环境&#xff1a;NS switch 问题&#xff1a;日版&#xff0c;港版无法连接大于44信道的5G WIFI 解决办法&#xff1a;修改PRODINFO.dec的WIFI 区域码 背景&#xff1a;我的switch是最早买的港版的一批&#xff0c;WIFI 只能连接日本的信道&#xff0c;家里的路由器是国行的&am…

黑豹程序员-CSS四种样式的定义方式及冲突后的就近原则

4种样式定义 浏览器缺省设置&#xff08;即默认&#xff09;外部样式表&#xff08;引用的css&#xff09;内部样式表&#xff08;位于 标签内部&#xff09;内联样式&#xff08;在 HTML 元素内部&#xff09; 样式冲突如何解决&#xff1f; 若多重样式将层叠为一个&#x…

CentOS安装OpenNebula(二)

被控端部署&#xff1a; 先要配置好yum源&#xff1a; [rootmaster yum.repos.d]# vim opennebula.repo[rootmaster yum.repos.d]# cat opennebula.repo [opennebula] nameopennebula baseurlhttps://downloads.opennebula.org/repo/5.6/CentOS/7/x86_64 enabled1 gpgkeyhttps…

WSL2安装历程

WLS2安装 1、系统检查 安装WSL2必须运行 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11。 查看 Windows 版本及内部版本号&#xff0c;选择 Win R&#xff0c;然后键入winver。 2、家庭版升级企业版 下载HEU_KMS_Activ…

如何开发物联网 APP?

如何开发物联网 APP? 这个问题本身是不严谨的&#xff0c;APP只是手机端的一个控制或者用于显示的人机交互页面&#xff0c;物联网是通过传感器&#xff0c;物联网卡等模块把物体接入网络以方便远程监控或者控制等。 你问的应该是怎么开发出来一个远程控制物体的APP吧&#x…

数学建模Matlab之数据预处理方法

本文综合代码来自文章http://t.csdnimg.cn/P5zOD 异常值与缺失值处理 %% 数据修复 % 判断缺失值和异常值并修复&#xff0c;顺便光滑噪音&#xff0c;渡边笔记 clc,clear;close all; x 0:0.06:10; y sin(x)0.2*rand(size(x)); y(22:34) NaN; % 模拟缺失值 y(89:95) 50;% 模…