六合开奖结果现场直播欢迎诸位!收藏本站注 册登 陆
常用三肖中特马:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 三肖中特马 > 文章页

在Excel中利用VBA实现多表单元格数据的读取与赋值应用举例

Admin | 2008-4-13 0:23:42 | ReadNums | 333440 | 标签 六合开奖结果现场直播 | 打印本页
     

  今受一网友之托,俺必忠人之事!

  俺那网友遇到一个麻烦问题了,她不是计算机高手,仅是Excel应用者,而她的问题实在难以使用普通办法来解决!

  俺也不是VBA学员,只得从网上临时学习VBA知识,以解其燃眉之急!

  现将心得体会与大家分享,虽然不是啥好方法,但是足以应付她的问题了,凡事只可问心无愧,本文绝无炫耀之意;希望对大家有所帮助!

  注:图片中显示的姓名,本例仅做举例学习之用,如果与您的姓名相同,还望海涵!!!

  问题是这样的……先过目一下Excel数据吧!

  表一:

        表二:

        表三:

  问题的需求是:将2表到8表的姓名追加填充到表1的姓名列中;将表2到表8的应发合计追加填充到表1的应发合计列中,并与姓名相对应;

  咋一看,数据表很少,每表数据也比较少,使用复制粘贴足以应付了!

  其实不然,如果有那么简单,这招俺也不用学习了!

  仔细分析表2和表3数据,姓名列突然跳到600多行了(其他数据表雷同),在这段行之中,可能存在数据,今后还可能增加不可意料的姓名,涉及到不可意料的数据,必然导致该操作具有很大的灵活性,灵活性大了,不使用一劳永逸的办法来对待,势必事倍功半!

  而事实上,每张表的数据量是比较大的,据她所说,每表数据将近1500条,如此一来,统统复制粘贴到表一中,那么,将来哪个表数据增加了,我们都很难从汇总的表一中使用肉眼判断出来,到头来也得重复很多的复制粘贴工作…

  为使用科学合理的办法来处理该问题,俺特别设计了如下的VBA代码,以助俺网友完成工作任务!

  代码如下:

 如何使用上述代码呢?

 打开你的Excel文件,按组合键Alt+F11,打开VB代码编辑窗口,如果打开的窗口未显示如上图的代码窗口,请在VB窗口中执行“视图”→“代码窗口”;

  在弹出的代码窗口中输入如上图的代码,按运行即可完成操作!

  注,为方便程序设计,俺特地在表2到表8的姓名列中的最后一个姓名下方单元格输入“姓名结束”,请注意了,如果没有,程序将无法运行,或者运行起来所得到的数据结果也是错误的!

  为方便各位的学习,提供原始代码:
-------------------
Private Function FillValue()
    k = 2    '表1数据填充从A2开始
    For i = 2 To 8                    '表循环,从表二循环到表8
       For j = 1 To 10000             '表内数据循环,步长最大值设置为10000,防止漏选数据,可修改为更大值
             '当遇到单元格的值为“姓名结束”时,退出循环
             If Worksheets(i).Cells(j, 1).Value = "姓名结束" Then
                Exit For
             End If
             '姓名不为空,单元格姓名值不为“姓名”的单元格进行值的赋值
             If Worksheets(i).Cells(j, 1).Value <> "" And Worksheets(i).Cells(j, 1).Value <> "姓名" Then
            
               '将表2到表8的A列数据根据条件赋值到表一的A列
                Worksheets(1).Cells(k, 1).Value = Worksheets(i).Cells(j, 1).Value
               
                '将表2到表8的F列数据根据条件赋值到表一的F列
                Worksheets(1).Cells(k, 2).Value = Worksheets(i).Cells(j, 6).Value '6代表F列
               
                '步长值,自增变量,让数据从表一的下一行逐渐填充
                k = k + 1
             End If
       Next
   Next
End Function
-------------------


问题未解决:在线咨询

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日