【记录】Excel 2021|(一)VBA操作Excel入门,在姓和名之间打空格,如“ZhangSanSan“改成“Zhang SanSan“

本文主要是介绍【记录】Excel 2021|(一)VBA操作Excel入门,在姓和名之间打空格,如“ZhangSanSan“改成“Zhang SanSan“,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版本:Excel 2021。

打开VBA界面:快捷键Alt+F11。(或视图-宏)。

录制宏,再看看宏的代码,就可以基本了解常规的Excel操作在VBA里是什么德行。

比方说,我需要对一个选区进行修改,就先录制宏,然后对选区随便改改,再停止录制,就知道选区对应的关键字是Selection了。

知道了常规的Excel操作之后,重要的就是写逻辑。

我写了一个简单的VBA逻辑:

Sub AddSpace()
' 将选中的单元格的第二个大写字符的前面加一个空格
' 例如"ZhangSanSan"改成"Zhang SanSan"i = 1For Each test In Selection              '遍历选中的ops = 2If (Len(test) > 2) Then             '只修改长度大于2的字符串For ii = 2 To Len(test)             '遍历单元格的字符串(从第二个开始)a = Mid(test, ii, 1)            '字符串取值If (a >= "A" And a <= "Z") Then '判断是否是大写ops = ii                    '确定位置Exit For                    '跳出for循环End IfNext iiIf Mid(test, ops - 1, 1) <> " " Then '如果已经有空格,则不加test2 = Mid(test, 1, ops - 1) & " " & Mid(test, ops)Selection(i) = test2End IfEnd Ifi = i + 1If (i >= 10000) Then                '不处理10000以上的数据量Exit ForEnd IfNextEnd Sub

能看明白上面那个程序,就能够清晰地认识到以下几个编程常用的问题:

  1. 选区遍历;
  2. 单元格字符串的字符串遍历、修改、拼接;
  3. 条件判断;
  4. 退出循环(VBA没有continue);

效果:

在这里插入图片描述


附加个Python版。

我以为用python写20分钟已经很久了,没想到VBA这程序花了我一个小时。虽然说实话它在这个程序中的运行速度,比python强远了,因为python我做了“打开excel、逐行填写、保存excel”等冗余的操作。

python版:

# author: shandianchengzi
# description: 用大写字符分割字符串
# status: completefrom win32com import clientfp='E:/workspace/py/工作1.xlsx'def myFunc():ws = wb.Worksheets[0]for i in range(1,1614):oldStr=list(ws.Cells(i, 1).Value)ops=0for j in range(1,len(oldStr)):if (oldStr[j].isupper()):ops=jbreakoldStr.insert(ops, ' ')ws.Cells(i, 2).Value = ''.join(oldStr)excel = client.DispatchEx('Excel.Application')
excel.Visible = True          #是否可视化
wb = excel.Workbooks.Open(fp)
myFunc()
wb.Save()
wb.Close(True)
excel.Quit()

这篇关于【记录】Excel 2021|(一)VBA操作Excel入门,在姓和名之间打空格,如“ZhangSanSan“改成“Zhang SanSan“的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_46106285/article/details/125009006
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/330268

相关文章

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE