如何在Excel中使用VBA宏实现批量插入数据?

鉴水鱼技能说 2024-06-29 03:55:47

有网友问:Excel 中如何做到将 sheet1表中的ABCD列提取到 sheet2,sheet3,sheet4, sheet5的A、B、C、D列?数据量较大,不适合复制粘贴。

其实这个问题用VBA宏来实现非常简单。VBA实现单元格的插入可以通过Insert方法来实现,主要有以下几个方面的应用:

一、在指定行或列前插入一个空行或列。下面的代码可以在第3行前插入一个空行并在第2列前插入一个空列。

Sub 指定行前插入() Rows(3).Insert ‘在第3行前插入一个空行 Columns(2).Insert '在第2列前插入一个空列End Sub

效果如下图示:

注:Insert方法作用于单行或单列时,可插入一个空行或空列

二、在指定的行或列前插入多行或多列。例如在第3行前插入3个空行,并在第2列前插入2个空列。

Sub 指定行列前插入多行多列() Rows("3:5").Insert Columns("B:C").InsertEnd Sub

运行效果如下图示:

注:Rows("3:5").Insert:和插入一个空行或空列的区别在于Insert方法所服务的对象的单元格范围,如果插入单行或单列,单元格区域就采用单行或单列的表示方法,如Rows(3)。如果要插入多行或多列,单元格对象就为插入位置以下的相等数量的行或列,如插入3行就用ROWS("3:5").Insert。

三、指定位置插入单格。下列代码运行后在B3:C3单元格区域上方插入高度为3行的单元格区域。

Sub 在单元格上方插入() Range("B3:C5").Insert shift:=xlDownEnd Sub

运行效果如下图示:

注:Range("B3:C5").Insert 表示插入与B3:C5一样大小的区域;Shift:=xlDown 表示原来的单元格向下移动。Insert方法的shift变量表示原有单元格区域的移动方向。如果shift:=xlRight,则表示向右移动。

那么,回到原来的问题,则显得比较简单了。假设有如下图示的工作簿(包含有Sheet1、Sheet2、Sheet3、Sheet4、Sheet5等工作表),Sheet1表中有示例数据,并添加一个用自选图形制作的按钮。

右击按钮,在弹出的快捷菜单中选择【指定宏】命令,然后在【指定宏】对话框窗口中单击【新建】按钮进入到VBA代码窗口,然后输入以下VBA代码:

Sub 插入列() Dim sheetName As Variant, sh As Variant sheetName = Array("sheet2", "sheet3", "sheet4", "sheet5") For Each sh In sheetName Sheets(sh).Columns("A:D").Insert Sheets(sh).Columns("A:D").Value = Sheets("sheet1").Columns("A:D").Value Next MsgBox "操作完成", vbOKOnly + vbInformation, "提示"End Sub

注:Columns("A:D").Insert表示在A列前插入4列;而Sheets(sh).Columns("A:D").Value = Sheets("sheet1").Columns("A:D").Value则表示将sheet1表中A:D列的数据复制到sh工作表的A:D列,非常的简单粗暴,效率极高。

返回工作表窗口后,单击按钮运行上述代码,即可实现批量插入数据。可根据具体情况,对代码进行适当的修改。

我是鉴水鱼老师,关注我,持续分享更多的Excel知识与操作技巧。

0 阅读:0