今儿晚上,接到一网友的技术请求,问题是关于EXCEL两表数据的复制粘贴;
他的问题是:有两个表,两表的同列(如A列)都填写着姓名,两表中的这些姓名有一部分是已经隐藏的,数据量非常大;
他的操作是:直接使用复制粘贴的办法来解决,而结果呢?只能复制未隐藏的姓名,已经隐藏的怎么也复制不了;
针对上述的情况,解决的办法不可一概而论,方法不以数记;
针对问题的特殊性,考虑到一劳永逸的方法,俺给他弄了个VBA代码,以方便他的操作;
本文仅提供一种最为简单的方法之一,以供菜鸟参考,不与大虾相提并论,如有不妥之处,敬请海涵!
如下图,为表一的数据,其中,3和4行的姓名被隐藏起来了,内容应该为姓名二和姓名三;
下图,为表二的数据,其中,3和4行的数据也被隐藏了,对应的内容应该为姓名六和姓名七;
下面,我们要实现的效果是,使用VBA代码,将表二的姓名追加到表一的姓名列中,不覆盖原有的内容,同时考虑已隐藏的数据;
根据上述的描述,结果应该为上图中的数据(上图数据已取消隐藏,以方便对照实现的过程)!
以下是实现的VBA代码:
--------代码开始---------
'将表二的某列数据复制到表一对应的列,依次往下填充但不覆盖
'数据追加到表一,同时检测隐藏的数据,即考虑隐藏数据
'以下实现的功能是,对两表A列数据进行操作
Sub AddTwoTableColmnValue()
Dim Count As Integer
Dim i As Integer
Dim j As Integer
'扫描表一第一列数据,看姓名在哪结束,使用Count变量做个记号
'为下面从表二中复制数据粘贴过来做好准备!
For i = 2 To 10000 '从第二行开始扫描
If Worksheets(1).Cells(i, 1).Value = "" Then
Exit For
End If
Count = i
Next i
'扫描表二第一列数据,直到姓名结束
'并将姓名复制粘贴到表一对应的列,但不进行覆盖!
For j = 2 To 10000 '从第二行开始扫描
If Worksheets(2).Cells(j, 1).Value = "" Then
Exit For
End If
Worksheets(1).Cells(Count + 1, 1).Value = Worksheets(2).Cells(j, 1).Value
Count = Count + 1
Next j
End Sub
--------代码结束---------
以上代码已有注释,打开对应的EXCEL文件,直接复制粘贴到运行环境运行即可;至于如何运行代码,有一定VBA基础知识的网友才能看懂,不再阐述!
如果未曾使用过VBA代码,请在本站中搜索相关文章加以学习先!讲过很多次,发过好几篇文章了!