Dzwebs.Net

撰写电脑技术杂文十余年

VBA实现两表符合条件的某列数据的复制粘贴(包含隐藏数据)

Admin | 2008-5-5 22:19:33 | 被阅次数 | 17256

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  今儿晚上,接到一网友的技术请求,问题是关于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代码,请在本站中搜索相关文章加以学习先!讲过很多次,发过好几篇文章了!


该杂文来自: Excel杂文

上一篇:利用Excel数据有效性和Countif函数限制某列输入重

下一篇:VBA对Excel加密解密代码及对单元格的锁定

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计