vba两张表,数据对比,以某一列做标识,比如学号,要求用不同颜色比如高亮整行显示出不一样的内容

数据量比较大40000+,帮忙写出vba代码,我vba刚接触,不是很强

Public Sub 比较不同项变色()

Dim c1 As Range, c2 As Range, c As Range, cc As Range
Dim r&, d1, n1&, n2&, iColor%, iTimer, tmp

'</*----根据实际表格,设置下面的变量值-------

Set c1 = Worksheets("sheet1").Range("A:A") '表1的数据位置
Set c2 = Worksheets("sheet2").Range("A:A") '表2的数据位置
iColor = 3 '标记的颜色,3 为红色
'----设置变量值结束----*/>

iTimer = Timer
Set c1 = Application.Intersect(c1, c1.Worksheet.UsedRange)
Set c2 = Application.Intersect(c2, c2.Worksheet.UsedRange)
If c1 Is Nothing Then MsgBox "表一无数据!请设置好初始变量。", vbCritical: Exit Sub
If c2 Is Nothing Then MsgBox "表二无数据!请设置好初始变量。", vbCritical: Exit Sub
c1.EntireRow.Interior.ColorIndex = xlNone
c2.EntireRow.Interior.ColorIndex = xlNone
Set d1 = CreateObject("Scripting.Dictionary")
For Each c In c1
tmp = CStr(c.Value)
If tmp <> "" Then
If Not d1.Exists(tmp) Then d1(tmp) = c.Row
End If
Next
For Each c In c2
tmp = CStr(c.Value)
If tmp <> "" Then
If d1.Exists(tmp) Then
d1(tmp) = ""
Else
n2 = n2 + 1
c.EntireRow.Interior.ColorIndex = iColor
End If
End If
Next
tmp = d1.items
With c1.Worksheet
For r = LBound(tmp) To UBound(tmp)
If tmp(r) <> "" Then
n1 = n1 + 1
.Rows(Val(tmp(r))).Interior.ColorIndex = iColor
End If
Next
End With
MsgBox "ok!共找到 " & n1 + n2 & " 项不同,其中:" & vbCrLf & vbCrLf & _
"表一中:" & n1 & " 项" & vbCrLf & _
"表二中:" & n2 & " 项" & vbCrLf & vbCrLf & _
"用 时:" & Format(Timer - iTimer, "0.0 秒")
End Sub
温馨提示:内容为网友见解,仅供参考
无其他回答

vba两张表,数据对比,以某一列做标识,比如学号,要求用不同颜色比如高亮整...
Public Sub 比较不同项变色()Dim c1 As Range, c2 As Range, c As Range, cc As Range Dim r&, d1, n1&, n2&, iColor%, iTimer, tmp '<\/*---根据实际表格,设置下面的变量值--- Set c1 = Worksheets("sheet1").Range("A:A") '表1的数据位置 Set c2 = Worksheets("sheet2...

如何将两张EXCEL表中的数据进行对比?
通过要进行对比的两个工作表或多个工作表位于不同的文件中,我们首先要做的就是当多个要进行对比的Excel工作表数据复制粘贴到同一个工作表中,同时做好各个工作表的命名准备,以便能正确的区分数据的来源。接下来确定数据“关键字”部分,即能够唯一标识记录的关键字组合,这样就可以在进行数据对比时,能够...

我手中有两个excel表,一个是自己班的学生名单,一个是全级的,现在我要...
在全年级的表格(假设为表1),搜寻是否在全班表格(假设为表2)中存在,假设表2学号在B列。在表1中,假设学号在B列,从B2开始,选择一个空列,假设为H列,H2输入如下公式 =vlookup(B2,[表2]sheet1!B:B,1,0)下拉复制公式。如果显示学号的就是你要的数据。显示#N\/A的就不是你班的学生 如...

两张EXCEL表格,用什么方法可以关联两张表格,提取出想要的数据?
统计人数 用sumif subtotal sumproduct 都可以, 平均成绩什么的, 也差不多 就这些公式 可以摆平了 === 实在不行发我给你填好 那就只是简单的筛选而已

excel,如何在某列中找出包含特定字符的行,并返回该整行数据。
在另一个工作表的A3输入 =index(花名册!a:a,small(if(isnumber(find("鹿苑",花名册!$C$3:$C$1000)),row($3:$1000),10000),row(a1)))&""数组公式,先按住CTRL+SHIFT,最后回车 公式右拉再下拉

如何在excel A列输入姓名B列自动显示学号(需要用vba吗?)
用函数就可以。在一张表里边存储姓名和学号信息。例如有20人在Sheet1中A1-A20放姓名,B1-B20放学号。在Sheet2的A1输入姓名,B2输入=VLOOKUP(A1,Sheet1!$A$21:$B$100,2,FALSE)即可得到对应的学号。还有问题可加QQ44779833

excel问题:有一张表 姓名 学号 科目 成绩 想变成 姓名 学号 语文 英...
用VBA吧,你提出的这个类型一般数据量都比较大的。应该不止这几门成绩的统计吧。下面的代码复制到VBA中运行即可:Sub ScorePX()Dim KID As Single '定义学号 Dim RowEnd As Single '定义结束行号 Dim RowRecord As Single '定义新序列插入位置 Dim ColW As Single Dim SumX As Single '定义总分...

有两张excel表格,是学生信息的,一张有所有学生的成绩,一张只有部分学生...
第二张表的学生姓名存放在A列,而且这两张表格在同一个工作簿下,那么需要在第二张表格的第一个学生姓名右侧的单元格(假设是B2)输入公式:=vlookup(B2,sheet1!A:B,2)下拉公式应用到其他单元格。这样就可以把这部分学生的成绩都查找引用出来。如果你的两个表是不同的两个工作簿,上面的公式里把...

EXCEL中如果工作表一某个单元格中输入一个特定文字,则在工作表二中显示...
用if就可以做到 if 有转出的那一列=“转出” 那么 输出这一行 反之输出空 如果嫌排版难看 用数组函数就能让它们在工作表2里逐行输出 =IFERROR(INDEX(Sheet1!$A$1:$B$9,SMALL(IF(IF(Sheet1!$C$1:$C$9="转出",Sheet1!$A$1:$A$9,"")="",9999,ROW(Sheet1!$A$1:$A$9)),ROW(...

VBA怎么用inputbox输入个人姓名,性别,学号,用消息框显示输入信息,同时...
Sheet1.Cells(1, i + 1).Value = xtemp(i)Next 上面代码比较简单,没有考虑容错问题;你控制不了别人用的时候输入的内容,比如你是要求别人输入三个内容、以英文逗号分开,但实际输入的时候别人可能只输入了两项、分隔符号也有可能是其他的(比如在输入汉字后没转换输入法就输了逗号),这些都是在...

相似回答
大家正在搜