如何用宏找出EXCEL表格中完全相同的行?

大量数据,每一行有好几列,表中有某行某列名字相同但是同行其他列数据不同的,现在要求用宏找出完全相同的行,并用颜色标记出来,求助…谢谢!重点在于我的表中有几万行,然后不同列... 大量数据,每一行有好几列,表中有某行某列名字相同但是同行其他列数据不同的,现在要求用宏找出完全相同的行,并用颜色标记出来,求助…
谢谢!重点在于我的表中有几万行,然后不同列有名字,种类,开发人,时间等好几列。必须所有列都相同的
展开
 我来答
百度网友d88c829
推荐于2016-04-10 · TA获得超过1159个赞
知道小有建树答主
回答量:2328
采纳率:76%
帮助的人:642万
展开全部

Alt+F11进入编辑器,插入模块,复制粘贴下面代码:

Sub t()

  Dim str As String    '保存每一行内容的临时变量

  Dim colNum As Integer    '表格列数

  Dim rowNum As Long        '表格行数

  Dim dict                '字典

  Set dict = CreateObject("Scripting.Dictionary")

  With ActiveSheet

    colNum = .UsedRange.Columns.Count

    rowNum = .UsedRange.Rows.Count

    For i = 1 To rowNum

       str = ""

        For j = 1 To colNum

          str = str & .Cells(i, j).Value    '将每一行的值连接成一个字符串

        Next

       If Not dict.Exists(str) Then

          dict.Add str, i    '如果字典中不存在str的值,加入字典,Key为str的值,Value为行号

       Else

          .Cells(i, colNum + 1).Value = "与第[" & dict(str) & "]行重复"    '如果存在重复值,在表格右侧空白列添加标注

          .Cells(dict(str), colNum + 1).Value = "与第[" & i & "]行重复"    '同时,在之前行右侧也添加标注

       End If

    Next

  End With

End Sub

效果如图:

错珹0AD
2011-07-29 · TA获得超过1449个赞
知道小有建树答主
回答量:460
采纳率:0%
帮助的人:321万
展开全部
有一个不用宏就能实现的方法,做一列辅助列(假设为F列),该列等于若干列的联合,比如:=A2&B2&C2&D2&E2 这样是用多列作为一个关键字,保证不出现你说的情况
(某行某列名字相同但是同行其他列数据不同的)
然后用条件格式来判断那些是重复的;选中F列,菜单栏》格式》条件格式》选择“公式”,输入:=IF(COUNTIF(F:F,F1)>1,1,0),设置格式,比如底色为红色,确定。
这样只要又重复的,便会用红色表示出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
推荐于2016-10-23 · TA获得超过8613个赞
知道大有可为答主
回答量:3242
采纳率:66%
帮助的人:2864万
展开全部
Sub Macro1()
'查找当前表格所有行,如果两行的所有列内容相同,则红色标记整行
Dim c As Range, r&, col%, cols%, arr, d, tmp
With ActiveSheet
Set c = .Cells.SpecialCells(xlCellTypeLastCell)
With .Range(.Cells(1, 1), c)
.EntireRow.Interior.ColorIndex = xlNone
arr = .Cells
cols = .Columns.Count
End With
Set d = CreateObject("Scripting.Dictionary")
For r = LBound(arr) To UBound(arr)
tmp = ""
For col = LBound(arr, 2) To UBound(arr, 2)
tmp = tmp & "|" & CStr(arr(r, col))
Next
If Len(tmp) > cols Then
If d.Exists(tmp) Then
.Rows(r).Interior.ColorIndex = 3
.Rows(Val(d(tmp))).Interior.ColorIndex = 3
Else
d(tmp) = r
End If
End If
Next
End With
MsgBox "ok"
End Sub
------------
如果需要改动程序功能,请Hi我,详细解答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
foxconn_fy
2011-07-29 · TA获得超过2515个赞
知道小有建树答主
回答量:1190
采纳率:0%
帮助的人:765万
展开全部
Sub aa()
Dim x, n
x = [a65536].End(xlUp).Row
For i = 1 To x
n = Cells(i, 1).Value
If Application.WorksheetFunction.CountIf(Range(Cells(i, 1), Cells(i, 5)), n) = 5 Then '主要是修改这里,其它没事,(Range(Cells(i, 1), Cells(i, 5)), Cells(i, 1)) = 5这里共有两个5,你有几列就输几,多少都不行的
Rows(i & ":" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式