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

比较多表相同位置的数据,然后再综合到表一

Admin | 2012-9-30 8:54:34 | ReadNums | 3596 | 标签 六合开奖结果现场直播 | 打印本页
     

  比较多表相同位置的数据,是这样来理解的:比如说:有三张工作表,列的名称分为:姓名、成绩、综合分三个列。

  姓名列,已输入了学员的姓名,现在,要填写的是每个学员的成绩和综合分这两列。

  现在,遇到的问题是,由于学员很多,因此,要把这张表发给很多人来录入成绩这些数据。

  每个录入的人遇到的问题是,学员的名字完全一样,但是,自己录入的成绩数据,是根据手里面的资料来录入的,因此,涉及到的问题是每个录入者都根据学员的名字在相应的行来录入。

  因此,这些录入数据的人,其实都是在不同行来录入成绩的。

  等所有的人都录入好了,把电子表格拿过来了,我们可以把每个人的复制了以后,放到同一张工作薄里面,最后,再综合到第一张工作表里面。

  自然,问题就变成了多表合并数据到表一的问题了,我们得使用VBA来完成。

  我们假设,每个录入的工作者的数据,都粘贴到了同一工作薄中。

  现在,使用表一为参照对象,拿表一的每一个单元格分别和表二表三表四等进行比较,如果表一的某个单元格不为空,就说明表一已经录入了数据,就不再将其它表的该位置的数据赋值过来,否则,只要表一的某个单元格为空,说明未填写数据,它的数据必定在其它工作表里面,通过循环找到数据并赋值过来即可完成综合合并的问题。

  下面,提供通用的综合合并的VBA代码,该代码经本站测试,完全可行。

  For i = 2 To Worksheets.Count
      For j = 2 To 999
          For k = 1 To 8
              If (Trim(Worksheets(1).Cells(j, k).Value) = "") Then
                  Worksheets(1).Cells(j, k).Value = Worksheets(i).Cells(j, k).Value
              End If
          Next k
      Next j
  Next i

  代码其实很简单,但是,却不好理解,下面本人为你解释一下部分代码。

  For i = 2 To Worksheets.Count 从第2个工作表开始做循环对比。因为表一是参照对象,就不用循环表一了。

  For j = 2 To 999 代表数据行的循环范围,从第2行找到999行,你可以修改。

  For k = 1 To 8  代表列,从1列循环到8列,你可以修改。

  If (Trim(Worksheets(1).Cells(j, k).Value) = "") 如果表1的该位置Cells(j, k)的数据为空,说明第一个录入者未在此处录入数据,那么,该位置必然会被其它录入者录入,因此,找到后赋值过来即可。

  Worksheets(1).Cells(j, k).Value = Worksheets(i).Cells(j, k).Value 此处就是赋值代码了。


问题未解决:在线咨询

网友评论

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