- 博客(287)
- 资源 (2)
- 收藏
- 关注
原创 VBA实现Word表格排序
在Word文档的多列表格中,需要按照第一列进行排序,同时保持其他列的数据对应顺序不变。想必大家都知道,在Excel中可以简单地使用排序功能实现这种需求,但是对于Word表格则需要使用VBA代码进行处理。利用字典对象可以方便地存储表格数据,通过键值对应关系保证排序后数据顺序正确性,如果使用普通的排序算法对于二维数组排序,那么在排序过程中交换数组元素时,将打乱第2列数据的顺序。
2023-09-11 01:52:59
401
原创 用户权限数据转换为用户组列表(3/3) - Excel PY公式
最近Excel圈里的大事情就是微软把PY塞进了Excel单元格,可以作为公式使用,轻松用PY做数据分析。系好安全带,老司机带你玩一把。实例需求:如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限,现在需要创建新的AD用户组,并根据用户当前的权限,将这些用户添加到相应的组中。
2023-09-10 03:42:34
292
原创 用户权限数据转换为用户组列表(2/3) - Power Query
使用Power Query实现数据转换,如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限,现在需要创建新的AD用户组,并根据用户当前的权限,将这些用户添加到相应的组中。
2023-09-10 03:21:51
182
原创 用户权限数据转换为用户组列表(1/3) - VBA
实例需求:如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限,现在需要创建新的AD用户组,并根据用户当前的权限,将这些用户添加到相应的组中。
2023-09-10 03:05:48
58
原创 BI神器Power Query(24)-- PowerQuery动态加载M公式
Power Query 是Excel中的强大数据处理与转换工具,如果需要“动态”处理数据,大家第一时间想到的是可以使用VBA,利用代码创建M公式,进而创建PQ查询,但是复杂的M公式可能有很多行, 使用VBA处理起来并不是很方便,并且用户打开工作簿文件时必须启用宏功能,代码才能发挥作用。其实无需借助VBA,PQ内置功能就可以实现动态加载M公式,接下来使用一个简单的PQ示例进行演示。这个技巧通常用于动态执行Power Query脚本或表达式,允许在运行时构建和执行Power Query代码,以满足特定的需求
2023-09-02 06:51:52
100
原创 使用VBA快速比对数据
实例需求:第一行是全系列数据集合,现在需要对比第一行数据,查找第2行数据中缺失的数字,保存在第3行中。具备VBA初步使用经验的同学,都可以使用双重循环实现这个需求,这里给大家提供另一种实现思路,如何快速找到这些缺失数字。
2023-09-02 03:14:35
135
原创 使用VBA快速关闭应用程序进程
使用VBA进行开发时,如果需要关闭其他Office应用程序,那么通常可以使用`GetObject`的方式获取该应用程序的引用,然后再关闭,有时需要重复多次以关闭多进程。如果希望关闭的应用程序并非Office组件,那么`GetObject`方式有时就不太方便了,其实借助`WMI`可以更加快捷的完成这个任务。
2023-09-02 02:49:32
199
原创 VBA快速插入签名(位置不固定)
实例需求:Excel中的多页表格如下图所示,其中包含多个“受益人签字”,其位置不固定,现在需要在其后插入签名图片。
2023-09-02 02:27:18
205
原创 使用VBA快速选中指定的多个工作表
在Excel操作界面中选中工作表标签时保持或者按下,可以选中多个工作表,操作时录制宏,可以得到类似如下的代码。```Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Select```这样的代码使用起来有时并不方便,例如Excel中的工作表个数较多,名称时常会发生变化等,在VBA开发过程中有更简洁的方法可以实现选中指定的多个工作表。例如现在需要选中当前工作簿中名称中包含“月”字的全部工作表。
2023-08-01 14:09:00
363
原创 使用VBA字典快速计算材料配比
实例需求:每个工序需要多种部件,现在需要计算部件采购占比- 如果只有一个供货商,那么占比为100%【参见绿色行】- 如果有多个供货商,那么最低价供货商占比为70%,最高价供货商占比为30%【参见黄色区域】- 不考虑两个部件单价相同的清空- 原料列中部分数据包含@,可以忽略,即`@2`和`2`是相同的原料
2023-08-01 13:48:16
120
原创 VBA调用文件选择对话框并打开指定文件
实例需求:VBA开发的应用程序中,如何为用户提供文件选择对话框,选中PDF文档之后,使用默认程序打开PDF文件。
2023-08-01 13:40:07
554
原创 VBA自动动态复制数据
实例需求:根据A3单元格(黄色)的输入值动态复制第11行数据,并且在A列填充顺序编号,如下图所示。如果A3单元格输入的数值小于当前已复制的行数,则清除多余数据行。如果A3单元格为0时,则仅保留序号1的行内容,和A3单元格为1时的效果相同,如下图所示。
2023-07-01 12:18:34
271
原创 VBA之正则表达式(42)-- 快速提取名称
实例需求:A列为待处理数据,现需要从中提取商品名、通用名、胰岛素笔相关信息,保存到B列至D列,需要注意如下几点:- `胰岛素笔`(E列)数据只存在于每组产品的第一行记录中,例如第2行数据中的“胰岛素笔”,对应第2~8行数据。- 商品名称可能以数字或者字母结尾,通用名可能以数字开头
2023-07-01 12:17:59
341
原创 在Excel当前窗口显示最后一行数据
大家也许都知道Excel工作表中数据行数较多,使用组合键可以快速定位最后一行,但是如果数据不是连续的(也就是工作表中包含空行),这个方式就只能定位到当前连续数据区域的最后一行。如下实例代码可以将最后一行数据显示在当前窗口中。
2023-07-01 12:12:57
1069
原创 VBA快速合并数据
实例需求:原始数据保存在工作表的A列至C列,现需要根据材料编号合并交付日期和交付数量,并且交付日期的日期格式采用两位数字年份简写格式,合并后的数据保存在E列和F列,如下图所示。
2023-07-01 12:06:41
222
原创 使用VBA在单元格中快速插入Unicode符号
在单元格中输入时并无法直接插入指定的Unicode编码字符,内置的插入符号功能中并不包含“Dingbats”,因为它并不是一种Windows字体。示例代码可以快速插入Dingbats符号。
2023-06-01 12:19:34
648
原创 包含合并单元格的表格快速排序
现需要将原料配方成分表按照“原料含量”从高到低排序,如下图所示。由于表格中包含合并单元格,因此Excel的排序功能无法正常。
2023-06-01 12:13:19
585
原创 VBA为什么无法读取单元格字体名称?
这并不是VBA的bug,由于A4单元格中即有中文字符又有英文字母,虽然单元格字体设置为Arial,但是这个字体库中并不包含中文字符,因此Excel会将其中的中文字符设置为Excel的默认中文字体(我的电脑为等线字体)。代码并不复杂,使用单元格的Font.Name属性读取字体名称,从截图中可以发现C4单元格内容为空,单步调试时,可以发现irow=4时,【立即窗口】中可以查看每个字符的字体,中文字符为等线字体,并不是插图1中的单元格Arial字体。使用如下代码读取A列单元格字体名称,填写到C列中。
2023-05-30 07:08:17
56
原创 具备“记忆”功能的VBA目录选择器
本篇博客介绍了如何在VBA开发中使用目录选择器,实现Windows目录选择器的“记忆”功能,让下次打开目录选择器时默认显示上次选择的目录
2023-05-01 07:36:11
790
1
原创 如何使用递归函数实现Excel列号转换列标
本博客讲述了如何使用递归方法实现Excel列号转换列标的功能。递归过程从算法上看貌似很复杂,但是本文通过举例说明了如何使用递归过程,以及如何确保递归过程能够正确的结束执行。
2023-05-01 07:32:24
1084
原创 快速多关键字统计
本篇博客介绍了如何使用VBA代码实现在Excel工作表中对多个关键字进行快速统计的功能。通过识别每个章节所在行、确定每个章节的数据区域、统计包含关键词的单元格个数和将统计结果写入指定单元格。
2023-05-01 07:28:44
697
原创 VBA之正则表达式(41)-- 替换函数声明
实例需求:对于函数声明代码的参数部分进行规范化处理,`Boolean`类型参数全部使用`ByVal`方式,效果如下图所示。
2023-04-01 01:09:11
395
原创 Office VBA也能任性截图(屏幕任意区域截图)
Excel是否可以实现屏幕任意区域截图?听起来似乎有些不务正业,已经有那么多截图软件,并且微信、QQ等也都提供了截图功能,但是存在的就是合理的,借助强大的PowerShell就可以实现任意区域截图功能。
2023-04-01 01:05:37
1220
1
原创 VBA定位文本框控件中光标位置
实例需求:用户窗体中有如下4个TextBox控件,TextBox1中已经有文字内容,点击【定位】按钮,统计TextBox1中段落数量,并定位TextBox1中光标位置(箭头处),如下图所示。
2023-04-01 01:04:54
1313
原创 VBA之正则表达式(40)-- 多组数据拆分
实例需求:订单数据保存在C列中,需要拆分菜品,每个菜品有三个字段:名称、单价、数量。拆分菜品后的单元格区域添加边框。如下图所示。
2023-03-01 02:03:15
230
原创 VBA之正则表达式(41)-- 快速标记两个星号之后的字符
实例需求:工作表中的数据保存在A列~G列,现需要识别D列中包含超过两个星号的内容,并将第3个星号及其之后的字符设置为红色字体,如图所示。
2023-03-01 02:02:46
337
原创 ChatGPT搞砸了~,如何使用VBA导出Word文档中的图片
今年大火的ChatGPT似乎无所不能,但是它的确不是万能的,咱们来试试。提供的代码根本无法运行,继续问,换了个代码,非常不幸的是--还是不能用。
2023-03-01 02:00:12
1047
原创 使用字典快速输入编号(匹配编码表)
实例需求:在A列输入样品名称之后,在B列字段填写编号,其规则如下:- 如果A列已经存在相同`样品名称`,则将编号递增,例如:A15输入沥青,最后一行相同样品名称在第12行,B15填写递增的编号`YP-2023-LQJ-003`- 如果A列并不存在相同`样品名称`,那么在Sheet2工作表中查找其编号规则,例如:A16输入土,找到其编号规则为`YP-2023-TGJ-`,B16填写编号`YP-2023-TGJ-001`
2023-03-01 01:57:37
116
原创 VBA检查指定应用程序是否已经打开
VBA中提供了`CreateObject`和`GetObject`两种方法获得对象实例,二者的区别在于`GetObject`用于获取已经打开的应用程序对象,但是如果该应用程序并没有打开,那么将产生运行时错误,代码中需要加入额外的错误处理代码。在任务管理器中可以轻松的查看当前已经打开的应用程序,如下图所示。
2023-02-01 07:25:21
1077
原创 提取页码去重再编号
实例需求:A列为档号数据,由多段数字组成,使用减号作为分隔符,最后一段数字代表页数,注意页数是不连续的,倒数第二段数字是代表档案中的第几本,每个档案都是从1开始。现在需要在B列创建“卷内顺序号”,按照顺序递增,如果A列中最后一段数字(页数)相同,那么序号也相同(如黄色区域所示)。最终效果如下图所示。
2023-02-01 07:24:03
206
原创 使用VBA获取电脑MAC地址
这个需求看似有些无厘头,为嘛要用VBA来读取MAC地址,存在的就是合理的。例如使用MAC地址和其他硬件信息可以生成电脑的唯一识别号,用于软件注册和实现软件狗功能。当然可能还也更多的应用场景。VBA对象模型只是涵盖Office对象,如果需要读取硬件信息,就要借助WMI(Windows Management Instrumentation),其简单介绍请参考 [***微软官方文档***](https://learn.microsoft.com/en-us/windows/win32/wmisdk/about
2023-02-01 07:22:45
747
原创 使用字典快速获取唯一值与重复值【单个字典对象】
在以前的博客《[**使用字典快速获取唯一值与重复值(交集与并集)**](https://blog.csdn.net/taller_2000/article/details/86755973)》使用多个字典对象获取交集与并集,最近有同学提问,是否可以只使用一个字典对象实现相同的功能,对于有“编程洁癖”的同学来说,可能不喜欢使用多个字典对象。实例需求:表1和表2为两个名单,不同班级有同名的学生,例如表2中有两个小王(截图中黄色单元格),因此需要使用`班级+姓名`作为学生的唯一识别标识,现在需要统计如下三个清
2023-02-01 04:26:31
321
原创 VBA之正则表达式(39)-- 提取规格数据(2/2)
实例需求:A列为某产品名称,现需要提取其中的规格数据,具体规则如下:- 规格数据以如下关键字开头:RO、RE、SQ、SD、QD、OB、HX、ET、QR、D2- 规则数据可能有多段(截图中红色部分)- 提取规格数据之后,乘号(即x)替换为星号- R(或者r)之前增加星号- 剔除无意义的0和小数点,如C6和C15所示。
2023-01-02 01:50:09
534
原创 VBA之正则表达式(38)-- 提取规格数据(1/2)
实例需求:A列为某产品名称,现需要提取其中的规格数据,具体规则如下:规格数据以如下关键字开头:RO、RE、SQ、SD、QD、OB、HX、ET、QR、D2规则数据可能有多段(截图中红色部分)提取规格数据之后,乘号(即x)替换为星号R(或者r)之前增加星号剔除无意义的0和小数点,如C6和C15所示。
2023-01-02 01:47:33
865
原创 Excel聚光灯--双箭头指示
实例需求:在工作表中核对数据时,虽然行列标题都会高亮显示,但是似乎并不明显,因此添加两个列标到活动单元格的箭头,以便于更好的定位。
2023-01-02 01:43:54
699
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人