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.mzph.cn/news/93516.shtml

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

相关文章

ffmpeg Operation not permitted

在ffmpeg合并视频的时候报这个错&#xff0c;一开始以为权限问题&#xff0c;后来发现是文件不安全&#xff0c;加 -safe 0 修改后代码&#xff1a; def mer_mp4(*args, save_path):tmp Path(args[0]) / Path(args[0]).parent / Path(video.txt)f open(tmp, w)for mp4 in a…

在线OJ项目核心思路

文章目录 在线OJ项目核心思路1. 项目介绍2.预备知识理解多进程编程为啥采用多进程而不使用多线程?标准输入&标准输出&标准错误 3.项目实现题目API实现相关实体类定义新增/修改题目获取题目列表 编译运行编译运行流程 4.统一功能处理 在线OJ项目核心思路 1. 项目介绍 …

docker portainer部署

拉取镜像 docker pull portainer/portainer安装镜像 # 启动镜像, -v /var/run/docker.sock:/var/run/docker.sock&#xff1a;将主机上的 /var/run/docker.sock 文件挂载到容器的相同位置&#xff0c;使得 Portainer 可以通过 Docker API 访问主机上的 Docker 引擎。 docker …

决策树C4.5算法的技术深度剖析、实战解读

目录 一、简介决策树&#xff08;Decision Tree&#xff09;例子&#xff1a; 信息熵&#xff08;Information Entropy&#xff09;与信息增益&#xff08;Information Gain&#xff09;例子&#xff1a; 信息增益比&#xff08;Gain Ratio&#xff09;例子&#xff1a; 二、算…

跟着顶级科研报告IPCC学绘图:温度折线/柱图/条带/双y轴

复现IPCC气候变化过程图 引言 升温条带Warming stripes&#xff08;有时称为气候条带&#xff0c;目前尚无合适且统一的中文释义&#xff09;是数据可视化图形&#xff0c;使用一系列按时间顺序排列的彩色条纹来视觉化描绘长期温度趋势。 在IPCC报告中经常使用这一方案 IPCC是…

【PostgreSQL】【存储管理】表和元组的组织方式

外存管理负责处理数据库与外存介质(PostgreSQL8.4.1版本中只支持磁盘的管理操作)的交互过程。在PostgreSQL中&#xff0c;外存管理由SMGR(主要代码在smgr.c中)提供了对外存的统一接口。SMGR负责统管各种介质管理器&#xff0c;会根据上层的请求选择一个具体的介质管理器进行操作…

凉鞋的 Godot 笔记 105. 第一个通识:编辑-测试 循环

105. 第一个通识&#xff1a;编辑-测试 循环 在这一篇&#xff0c;我们简单聊聊此教程中所涉及的一个非常重要的概念&#xff1a;循环。 我们在做任何事情都离不开某种循环&#xff0c;比如每天的 24 小时循环&#xff0c;一日三餐循环&#xff0c;清醒-睡觉循环。 在学习一…

首发Orin N芯片,腾势追赶「智驾第一梯队」

张祥威 编辑 | 德新 英伟达最新一代芯片—— Orin N&#xff0c;腾势拿下 首发。 9月26日&#xff0c;腾势N7推出「高快智驾包」。官方描述中&#xff0c;这一选装将“基于新一代NIVIDIA DRIVE ORIN的 高性能平台”&#xff0c;可以实现高速NOA。 此前&#xff0c;腾势的…

从零手搓一个【消息队列】实现虚拟主机的核心功能

文章目录 一、虚拟主机设计二、实现虚拟主机1, 创建 VirtualHost 类2, VirtualHost() 构造方法3, exchangeDeclare() 创建交换机4, exchageDelete() 删除交换机5, queueDeclare() 创建队列6, queueDelete() 删除队列7, queueBind() 创建绑定8, queueUnBind() 删除绑定9, basicP…

C#实现十大经典排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、桶排序、基数排序

以下是使用C#实现十大经典排序算法的示例代码: 1. 冒泡排序(Bubble Sort) void BubbleSort(int[] array) {int n = array.Length;for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - i - 1; j++){if (array[j] > array[j + 1]){int temp = array[j];array…

软考 系统架构设计师系列知识点之软件架构风格(4)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件架构风格&#xff08;3&#xff09; 这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此…

vscode 注释插件koroFileHeader

https://blog.51cto.com/u_15785499/5664323 https://blog.csdn.net/weixin_67697081/article/details/129004675

2020ICPC银川(A E G J K)

2020ICPC银川(A E G J K) 2020ICPC银川 A. Best Player&#xff08;模拟&#xff09; 在某一维方向上无法区分的点显然另两维坐标相同 &#xff0c; 那么在当前维度上能区分的点个数就是本质不同的另两维坐标组成的点对的个数 &#xff0c; 用set维护一下即可。 #include&l…

YoloV5实时推理最短的代码

YoloV5实时推理最简单代码 import cv2 import torch# 加载YOLOv5模型 model torch.hub.load(ultralytics/yolov5, yolov5s)# 使用CPU或GPU进行推理 device cuda if torch.cuda.is_available() else cpu model.to(device)# 打开摄像头&#xff08;默认摄像头&#xff09; cap…

vue pc端/手机移动端 — 下载导出当前表格页面pdf格式

一、需求&#xff1a;在手机端/pc端实现一个表格页面&#xff08;缴费单/体检报告单等&#xff09;的导出功能&#xff0c;便于用户在本地浏览打印。 二、实现&#xff1a;之前在pc端做过预览打印的功能&#xff0c;使用的是print.js之类的方法让当前页面直接唤起打印机的打印预…

【好玩的开源项目】Docker部署cook菜谱工具

【好玩的开源项目】Docker部署cook菜谱工具 一、cook菜谱工具介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本 四、下载cook镜像五、部署cook菜谱工具5.1 创建cook容器5.2 查看容器状态5.3 检查容器日志 六、…

Oracle is和as 关键字学习

之前写的Oracle存储过程中都有is和as关键字&#xff1b;下面学习这二个关键字&#xff1b; Oracle中is可用于以下情况&#xff1a; 判断某个值是否为null。在Oracle中&#xff0c;null表示一个未知或不适用的值。因此&#xff0c;我们需要使用is null或is not null语句来检查某…

JS合并2个远程pdf

要在HTML和JavaScript中读取远程PDF文件的矢量数据并合并两个PDF文件&#xff0c;您可以使用pdf-lib和Axios库。以下是使用pdf-lib和Axios在HTML和JavaScript中读取和合并远程PDF文件的步骤&#xff1a; 1. 引入 首先&#xff0c;确保您在HTML文件中引入了pdf-lib和Axios库。…

MySQL的索引问题

1、关于索引 1.1 首先来看一下的关于对索引的理解 索引是一个单独的、存储在磁盘上的数据库结构&#xff0c;包含着对数据表里所有记录的引用指针。使用索引可以快速找出在某个或多个列中有一特定值的行&#xff0c;所有MySQL列类型都可以被索引&#xff0c;对相关列使用索引…

恼人的TCP套接字部分发送成功场景

源起 以前就知道套接字有可能出现部分发送成功的可能&#xff0c;直到近段时间一个典型的使用场景触发了明确的此问题&#xff0c;才予以重视&#xff0c;比较深入地考虑解决这个问题的方案&#xff01; 分析 因为TCP的流式特征&#xff0c;如果出现部分发送成功&#xff0c…