vba 判断目标单元格内容改变的代码_如何把批注中的信息批量提取到单元格?...

置顶公众号设为星标,每周收到实用文章 87acd6b4da8de05a90ac699ce7ba75ee.png 关注公众号「Excel表格学院」 个人微信号 | (ID:BGXujuntai)在Excel中, 批注(Comment)是一类特殊的数据。利用批注,我们可以为单元格添加备注信息(如解释、说明),方便表格阅读者了解数据背后的信息。然而,由于不当的使用习惯,我们也经常碰到一些表格,制表人将极其复杂的备注信息写入到批注而非单元格中, 导致后期想提取批注时非常麻烦。 1860e5e024585cd1c094c5a6081c8517.png 说明: 解答问题时对批注信息做了处理如上图,A列“系统单号”中每个单元格都带有批注,所批注信息为系统单号对应的所有柜号(文本,按行排列)。实际上A、B列有很多行数据,本案例使用4行仅作演示之用。现在需求是—— 如何快速将A列所有批注信息(即柜号)提取出来,并且写入独立的单元格,完成右侧样式表格。

c89447fb0adda9dee33ffbf0e194a80f.png

怎么办?这是一个相当棘手的问题!如果手工处理的话,那就要一个一个单元格复制批注内容、粘贴后再分列、转置……,工作量极大,我保证你处理完之后手抽筋!那应该怎么处理呢? 下面教你用VBA完成一键处理。 第1步:准备工作 假设,我们要将目标数据提取至E、F、G3列,提前做好表头: 247716cb15b679f162ef69078abce934.png 第2步:编写代码ALT+F11,打开VBE,在工作表对应模块中编写代码如下:
Sub 提取批注内容()Dim arr() As String  '定义一个动态数据,字符型
For i = 3 To 6
 arr = Split(Cells(i, 1).Comment.Text, vbLf)
 For j = LBound(arr()) To UBound(arr())
   If arr(j) <> "" Then
     [e65536].End(3).Offset(1, 0) = Cells(i, 1)
     [f65536].End(3).Offset(1, 0) = arr(j)
     [g65536].End(3).Offset(1, 0) = Cells(i, 2)
   End If
 Next
Next
End Sub

ff66e8442176b09720f32e725ddcc919.png

将光标置于代码任何位置,按F5运行程序。几秒钟后,就可以在Excel中看到执行结果了: 37a85160e3f9740501cb6896a202b2c1.png af64717559a877d05e1a796f2b336ce1.png本例中,利用Split方法,对批注文本(Comment.Text)进行拆分,而拆分所依据的符号是回车符(Vblf)。这样,将拆分后的结果储存到动态数组arr()中,最后再将数组元素赋值给目标单元格即可。
关键知识点:
1、定义动态数据arr() 2、split方法,利用回车符(vblf)进行拆分 3、由于原批注末尾有多个空行,所以拆分后要加上IF判断,不为空才执行 4、split拆分后的结果是一个数组,最后将数组内容依次写入单元格 5、OFFSE方法,对单元格进行偏移(见VBA课程讲解) ac109cfce7285b6eab3f26e354fb72ee.png关于VBA的内容,欢迎查看表格学院《VBA实战营》 (SVIP可免费学习)。今天的内容就到这里,需 要案例原文件,请加微信:BGXujuntai。  作者     徐军泰  ——Excel畅销书作者,表格学院创始人,著有国内首部Excel动态图表书籍《左手数据,右手图表》,唯库、一起听课星球、人人都是产品经理等平台约讲师。 独创IPO学习心法,帮助1000+付费会员以及20000+付费课学员实现Excel水平快速提升。 564be9b06b1b5bafa40574ee9c6888aa.png 订阅号: Excel同学会         服务号: Excel表格学院 个人微信: BGXujuntai(1对1私教、企业培训)
不知道Excel怎么学? 有问题得不到及时回答? 自学了很久收效甚微? 欢迎 报名「Excel同学会」S VIP 一站式课程+全套训练营+答疑 让你快速从小白到高手!

27241de557440fac613baf1d71507a1b.png

加微信:BGXujuntai 报名

添加时备注:SVIP

可享受特别福利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值