Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 删除重复项,但尊重案例_Excel_Vba - Fatal编程技术网

Excel 删除重复项,但尊重案例

Excel 删除重复项,但尊重案例,excel,vba,Excel,Vba,我需要删除数据中的重复项,如: 我使用的代码如下: Sub Macro1() ActiveSheet.Range("$G$1:$G$10").RemoveDuplicates Columns:=1, Header:=xlNo End Sub 产生: 我想保留字母顺序相同但大小写不同的单词。如何实现这一点???您可以使用以下代码。假设数据在A1到A7的范围内,对于不同的范围,您可以修改代码 Dim oDic As Object, vData As Variant, r As Long

我需要删除数据中的重复项,如:

我使用的代码如下:

Sub Macro1()
    ActiveSheet.Range("$G$1:$G$10").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
产生:


我想保留字母顺序相同但大小写不同的单词。如何实现这一点???

您可以使用以下代码。假设数据在A1到A7的范围内,对于不同的范围,您可以修改代码

Dim oDic As Object, vData As Variant, r As Long

Set oDic = CreateObject("Scripting.Dictionary")

With Range("A1:A7")
    vData = .Value
    .ClearContents
End With

With oDic
    .comparemode = 0
    For r = 1 To UBound(vData, 1)
        If Not IsEmpty(vData(r, 1)) And Not .Exists(vData(r, 1)) Then
            .Add vData(r, 1), Nothing
        End If
    Next r
    Range("A1").Resize(.Count) = Application.Transpose(.keys)
End With

这里有一个可能对你有用的方法。(它显然有一些粗糙的编码元素,但我认为你已经了解了情况,可以根据需要修复任何东西):

Sub RespectCase()

Dim rSearch As Range, cel As Range, rFound As Range
Set rSearch = Range("G1:G10")
Set rFound = Range("J1:J10")

For Each cel In rSearch

    Dim rMatch As Range
    Set rMatch = rFound.Find(cel, LookAt:=xlWhole, MatchCase:=True)

    If rMatch Is Nothing Then

        Range("J10").End(xlUp).Offset(1).Value = cel

    End If

Next

End Sub