Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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_Duplicates - Fatal编程技术网

Excel 是否仅删除数字重复行?

Excel 是否仅删除数字重复行?,excel,vba,duplicates,Excel,Vba,Duplicates,我有两张工作簿。它们是从两个文本文件报告导入(连接)的。现在,我将在下面发布的代码删除了两个工作表之间的所有重复项,并留下了第一个工作表(今天),只剩下唯一的行。问题是A列,我用它来比较和删除某些行上的单词(如“Category”)和其他行上的数字。我真正需要删除的唯一副本是数字副本。我宁愿这些词被忽略。是否有方法删除具有数值的重复行并忽略字母值?我一直找不到任何东西,老实说,我不经常做这种事情 Sub CleanDupes() Application.ScreenUpdating =

我有两张工作簿。它们是从两个文本文件报告导入(连接)的。现在,我将在下面发布的代码删除了两个工作表之间的所有重复项,并留下了第一个工作表(今天),只剩下唯一的行。问题是A列,我用它来比较和删除某些行上的单词(如“Category”)和其他行上的数字。我真正需要删除的唯一副本是数字副本。我宁愿这些词被忽略。是否有方法删除具有数值的重复行并忽略字母值?我一直找不到任何东西,老实说,我不经常做这种事情

Sub CleanDupes()
    Application.ScreenUpdating = False
    
    Dim targetArray, searchArray, targetRange As Range, x As Long
           
    'Update these 4 lines if your target and search ranges change
    Dim TargetSheetName As String: TargetSheetName = "Today"
    Dim TargetSheetColumn As String: TargetSheetColumn = "A"
    Dim SearchSheetName As String: SearchSheetName = "Yesterday"
    Dim SearchSheetColumn As String: SearchSheetColumn = "A"

    'Load target array
    With Sheets(TargetSheetName)
        Set targetRange = .Range(.Range(TargetSheetColumn & "12"), _
                .Range(TargetSheetColumn & Rows.Count).End(xlUp))
        targetArray = targetRange
    End With
    'Load Search Array
    With Sheets(SearchSheetName)
        searchArray = .Range(.Range(SearchSheetColumn & "12"), _
                .Range(SearchSheetColumn & Rows.Count).End(xlUp))
    End With


    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    'Populate dictionary from search array
    If IsArray(searchArray) Then
        For x = 1 To UBound(searchArray)
            If Not dict.exists(searchArray(x, 1)) Then
                dict.Add searchArray(x, 1), 1
            End If
        Next
    Else
        If Not dict.exists(searchArray) Then
            dict.Add searchArray, 1
        End If
    End If

    'Delete rows with values found in dictionary
    If IsArray(targetArray) Then
        'Step backwards to avoid deleting the wrong rows.
        For x = UBound(targetArray) To 1 Step -1
            If dict.exists(targetArray(x, 1)) Then
                targetRange.Cells(x).EntireRow.Delete
            End If
        Next
    Else
        If dict.exists(targetArray) Then
            targetRange.EntireRow.Delete
        End If
    End If
End Sub

在将值添加到字典之前,请检查值
是否是数字的
?是否有人不知道
IsNumeric(…)
Vartype(…)=vbDouble
之间的区别?不应该有太多。