vba单元格批量赋值 | 您所在的位置:网站首页 › 怎么批量把批注内容提取到单元格 › vba单元格批量赋值 |
在Excel中,批注(Comment)是一类特殊的数据。 利用批注,我们可以为单元格添加备注信息(如解释、说明),方便表格阅读者了解数据背后的信息。 然而,由于不当的使用习惯,我们也经常碰到一些表格,制表人将极其复杂的备注信息写入到批注而非单元格中,导致后期想提取批注时非常麻烦。 如上图,A列“系统单号”中每个单元格都带有批注,所批注信息为系统单号对应的所有柜号(文本,按行排列)。 实际上A、B列有很多行数据,本案例使用4行仅作演示之用。 现在需求是——如何快速将A列所有批注信息(即柜号)提取出来,并且写入独立的单元格,完成右侧样式表格。 怎么办?这是一个相当棘手的问题! 如果手工处理的话,那就要一个一个单元格复制批注内容、粘贴后再分列、转置……,工作量极大,我保证你处理完之后手抽筋! 那应该怎么处理呢?下面教你用VBA完成一键处理。 第1步:准备工作假设,我们要将目标数据提取至E、F、G3列,提前做好表头: 第2步:编写代码 ALT+F11,打开VBE,在工作表对应模块中编写代码如下:Sub 提取批注内容()Dim arr() As String '定义一个动态数据,字符型For i = 3 To 6arr = 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 IfNextNextEnd Sub 将光标置于代码任何位置,按F5运行程序。几秒钟后,就可以在Excel中看到执行结果了: 本例中,利用Split方法,对批注文本(Comment.Text)进行拆分,而拆分所依据的符号是回车符(Vblf)。 这样,将拆分后的结果储存到动态数组arr()中,最后再将数组元素赋值给目标单元格即可。 关键知识点: 1、定义动态数据arr() 2、split方法,利用回车符(vblf)进行拆分 3、由于原批注末尾有多个空行,所以拆分后要加上IF判断,不为空才执行 4、split拆分后的结果是一个数组,最后将数组内容依次写入单元格 5、OFFSE方法,对单元格进行偏移 |
CopyRight 2018-2019 实验室设备网 版权所有 |