vba单元格批量赋值 您所在的位置:网站首页 怎么批量把批注内容提取到单元格 vba单元格批量赋值

vba单元格批量赋值

#vba单元格批量赋值| 来源: 网络整理| 查看: 265

在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 实验室设备网 版权所有