在Excel中批量粘贴不覆盖原来内容,可以使用两种方法:
1、使用现有Excel功能设置
右键选择已经填充数据的单元格,点击“选项”,在对话框中勾选“无限制填充”,然后点击“确定”进行确认。
此时,原有的数据会被新的填充覆盖,但是如果新的数据在现有的区域中,那么就会在原来的单元格的下方新增一行,将新的数据添加到新的单元格中,而不会覆盖原有的数据。
2、使用VBA编程
如果直接使用Excel功能对原来数据进行填充,在规模比较大的情况下,操作起来可能会比较麻烦,这时我们可以通过VBA进行相关设置,可以编写一个函数,用来判断新输入的数据是否在原有区域中,如果是,则在
原有单元格下方新增一行,将新的数据添加进去,不覆盖原有的数据。
使用VBA实现上述功能,可以通过以下几步:
1、打解VBE编辑器,在模块窗口中编写下面的函数:
Function IsInArea(rngTarget as Range, rngSource as Range) as Boolean Dim retVal As Boolean '检查rngTarget是否存在于rngSource中 If Not Intersect(rngTarget, rngSource) Is Nothing Then retVal =
True Else retVal = False End If IsInArea = retVal End Function
2、编写想要使用的函数:
Sub PasteWithoutOverwrite() Dim rngTarget As Range, rngSource As Range Dim destrow As Long '设置被填充数据的区域 Set rngSource = ThisWorkbook.Sheets("Sheet1").Range("A1:B10") '设置右键粘
贴将要插入的数据 Set rngTarget = Selection '判断rngTarget在rngSource中是否存在 If IsInArea(rngTarget, rngSource) Then '如果rngTarget存在,则在rngSource下方新增一行 destrow =
rngSource.Rows.Count + 1 '将粘贴的数据插入 rngTarget.Offset(destrow - rngTarget.Row).PasteSpecial xlPasteValues Else '如果不存在,则将粘贴的数据插入 rngTarget.PasteSpecial xlPasteValues
End If End Sub
3、在工作表上右键选择新增的显示的区域,然后选择“宏”,选择“PasteWithoutOverwrite”即可实现刚刚编写的函数,右键粘贴时,系统会自动调用“PasteWithoutOverwrite”函数,不会覆盖原来的数据。
此外,在使用VBA实现上述功能时,也可以结合更多的功能,比如:自动检查被填充数据是否已经存在,根据数据量大小,自动增加行数,以保证新增的数据可以完全添加进去,等等。
综上所述,Excel中批量粘贴不覆盖原来内容,可以通过使用Excel功能设置中的“无限制填充”,以及编写VBA程序来实现,结合实际情况,我们可以根据自身情况,选择最适用的方式来实现,以避免有内容被覆盖的
情况发生。
转载请注明来源本文地址:https://m.tuituisoft/office/38329.html