发现了许多涉及在两列中找到重复项的问题:
即。 MS Excel how to create a macro to find duplicates and highlight them?和excel mark duplicates values
但是我正在尝试调整代码以用于在一列中查找重复项。例如,这是一个数据集:
第1栏
Foo
酒吧
23
23
12
foo
酒吧
巴特
这就是我现在正在使用的:
Function warnDupes()
Dim lastRow As Long
Dim dict As Object
' Let Col be the column which warnDupes operates on.
Dim Col As String
Col = "A"
Set dict = CreateObject("scripting.dictionary")
lastRow = range(Col & Rows.Count).End(xlUp).Row
On Error Resume Next
For i = lastRow To 1 Step -1
If dict.Exists(range(Col & i).value) = True Then
'range("Y" & i).EntireRow.Delete
MsgBox ("Hmm...Seems to be a duplicate of " & range(Col & i).value & _
" in Cell " & Col & i)
End If
dict.Add range(Col & i).value, 1
Next
End Function
到目前为止,我已经有一些代码可以完成90%的工作。 23和23匹配。酒吧和酒吧相匹配。所以代码匹配字符串和Ints。但我希望宏能够将Foo和foo匹配为副本。如何让Excel忽略大小写?
这个问题(Function for detecting duplicates in Excel sheet)似乎相关但我无法修改代码或理解作者所做的事情。对代码,解释或建议的任何改进都将非常感激。
感谢。
更新
注意到一些非常奇怪的东西。
数据:
IB6061
IC6071
。有什么理由吗?
答案 0 :(得分:6)
富兰克林
为什么不使用Excel公式?
如果值在Col A中,则在Cell B1中键入它并将其复制下来?
=IF(COUNTIF(A:A,A1)>1,"It is a duplicate","It is not a duplicate")
它也适用于“Foo”和“foo”
等案件您还可以使用上述公式使用条件格式来突出重复项吗?
<强>后续强>
数据:
IB6061
IC6071
无论我使用我的宏还是使用Excel中的条件格式工具,都匹配。
有什么理由?
你使用什么公式?
这对我有用。突出显示Col A,然后使用此公式
=COUNTIF(A:A,A1)>1
查看快照
SID
答案 1 :(得分:3)
在你的存在()&amp; .Add()行,使两个值都是相同的情况:
If dict.Exists(UCase$(Range(Col & i).Value)) Then
和
dict.Add UCase$(Range(Col & i).Value), 1
这样,重复项将始终以大写形式添加到字典中,因此案例永远不会重要。
答案 2 :(得分:2)
您可以将所有键放在小写字母中,例如:
Dim myKey as String
For i = lastRow To 1 Step -1
myKey = UCase(range(Col & i).value)
If dict.Exists(myKey) = True Then
'range("Y" & i).EntireRow.Delete
MsgBox ("Hmm...Seems to be a duplicate of " & range(Col & i).value & _
" in Cell " & Col & i)
Else
dict.Add myKey, 1
End If
Next i
答案 3 :(得分:2)
这对我有用
Sub removeDuplicate(rg As Range, col as Integer)
rg.RemoveDuplicates Columns:=col, Header:=xlYes
End Sub
' Excel 2003
Option Explicit
Sub DeleteDups(range as String)
Dim x As Long
Dim LastRow As Long
' Range "A65536"
LastRow = Range(range).End(xlUp).Row
For x = LastRow To 1 Step -1
If Application.WorksheetFunction.CountIf(Range("A1:A" & x), Range("A" & x).Text) > 1 Then
Range("A" & x).EntireRow.Delete
End If
Next x
End Sub
答案 4 :(得分:0)
您可以添加
Option Compare Text
对于模块的非常顶级,该模块中的所有代码现在都将非区分大小写地比较文本。
CAT 猫 猫 CAT
......都会匹配。
答案 5 :(得分:0)
在Siddharth的回复基础上,如果你想要突出显示除第一个之外的所有重复实例(为了简单地选择所有显示并消除它们),你可以使用他的字符串的这个修改:
=IF(COUNTIF(A$1:A2,A2)>1,"D","S")
。
对于条件格式,它就像
=COUNTIF(A$1:A2,A2)>1
。
这只检查当前单元格上方的行,因此副本的第一个实例不会突出显示(因为它上面没有任何重复项)。
答案 6 :(得分:0)
对于返回布尔值的函数,请尝试...
<div class="block block-one">
<h2 class="block-title--animated">Color Test</h2>
</div>
<div class="block block-two">
<h2>Color Again</h2>
</div>