excel删除数据问题!

假设有两张表,一张是录用学生的名单,1800人;另一张是确定有来报道的名单,1600人,现在得到没来报道的人的名单?请各位大侠指教!
编班 座号 姓名 身份证号码 性别 民族
(表的基本格式就是这样)

看来两张表格的表头是一样,都是
编班 座号 姓名 身份证号码 性别 民族

只是第一张表是录用学生的名单,有1800人
第二张表是报道的名单,是1600。 1600人自然含在第一表里,只是顺序和第一张表不一致,无法用眼睛直接看出来未报到的那200人是谁。
这要进行表与表的比较。
.......................
有多个方法,但我最欣赏的方法一是条件引用与排序筛选组合法,二是用VBA。
方法一:
经认真分析,身份证号列D列数据具有唯一性,
所以在 第一张表 F1中输入“结果”二字做为标识。在F2中输入公式:
=VLOOKUP($D2,Sheet2!$D$2:$D$1601,1,FALSE)=$D2
然后选中F2,在右下角的黑十字光标处双击,自动填充到F1801
这时,F列(也就是“民族”的下一列),会出现“TRUE”和“#A/N”。
其中的“#N/A”就是没来报到的那200人。
接下来有两种方法:按F列降序排列(降序,未报到的会排到上边,前200行!不错吧!!哈哈)或按F列筛选(在#A/N项前打勾,这个醒目,因为报到将被隐藏,只剩下未报到的了,删除它或者复制它粘贴到别处去吧!呵呵,别忘了把辅助列F列删除了。大功告成了...)
.......................
第二个方法:VBA。
如果你需要代码,我会编写出来。

========================================
您的问题==我的课题 奉献知识==辉煌生命
黑龙江省 张志晨
========================================

补充:

Sub dlt()
j = 1801 '根据实际确定
k = 1601 '根据实际确定
For hang = 2 To j '有表头,空一行
w = 0
For i = 2 To k '从j最下一行开始查询,有表头,空一行
If Worksheets("录取表").Cells(hang, 4).Value = Worksheets("报到表").Cells(i, 4).Value Then '如果有相同的
Exit For '退出循环,查下一个数据
Else
w = w + 1’累加不匹配的人次
End If
Next
If w = 1600 Then’如果在1600人中都没有
m = m + 1 '累加未报到的人数
For n = 1 To 5 '就前五列,从编号一民族。
Worksheets("未报到表").Cells(m, n).Value = Worksheets("录取表").Cells(hang, n).Value'产生未报到表
Next
End If
Next

End Sub
温馨提示:答案为网友推荐,仅供参考
相似回答