Dzwebs.Net

撰写电脑技术杂文十余年

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

Admin | 2012-9-30 8:54:34 | 被阅次数 | 6157

温馨提示!

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

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

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

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

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

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

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

  自然,问题就变成了多表合并数据到表一的问题了,我们得使用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 此处就是赋值代码了。


该杂文来自: Excel杂文

上一篇:Excel输入的文字出现在左边而不是右边

下一篇:VBA打开Excel却隐藏不显示工作薄的两种方法

网站备案号:

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

版权属性:

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

联系方式:

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