今受一网友之托,俺必忠人之事!
俺那网友遇到一个麻烦问题了,她不是计算机高手,仅是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 ------------------- [办公软件]如何实现Office工具栏、菜单以及菜单命令重命名 [办公软件]如何在Office文档(大)括号内输入多行文字 [办公软件]如何在office(PowerPoint,Word,Excel)中制作带圈的… [办公软件]批量删除Office文档(word,excle,powerpoint)中的超… [办公软件]Office(Word,Excel)密码破解软件(Office Password… [办公软件]如何让低版本的Office也能顺利编辑2007文档 [办公软件]在PowerPoint中轻松插入Excel表格 [办公软件]Word、Excel和PowerPoint文件格式兼容包(简体中文… [办公软件]设置office艺术字的形状 [办公软件]如何将Office菜单设置、工具设置、宏设置等应用到…
|