Vba 基于两个单元格的唯一列表

Vba 基于两个单元格的唯一列表,vba,excel,Vba,Excel,我正在使用以下代码提取唯一客户的列表,我想根据两列(F列和K列)的组合提取一个列表。是否有更新此代码的有效方法 就像这样,使用字典来获得独特的组合和数组比在工作表中更快 Option Explicit Sub TEST() Application.ScreenUpdating = False Dim arr(), i As Long, dict As Object Set dict = CreateObject("Scripting.Dictionary")

我正在使用以下代码提取唯一客户的列表,我想根据两列(F列和K列)的组合提取一个列表。是否有更新此代码的有效方法


就像这样,使用字典来获得独特的组合和数组比在工作表中更快

Option Explicit
Sub TEST()
    Application.ScreenUpdating = False
    Dim arr(), i As Long, dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    With Worksheets("Sheet3")                    '<==Change as required
        arr = .Range("F1:K6").Value
        For i = LBound(arr, 1) To UBound(arr, 1)
            dict(arr(i, 1) & "," & arr(i, 6)) = 1
        Next
    End With

    Dim key As Variant, rowCounter As Long
    For Each key In dict.keys
        rowCounter = rowCounter + 1
        Worksheets("Sheet2").Cells(rowCounter + 1, 1).Resize(1, 2) = Split(key, ",")  '<== Change output sheet as required
    Next
    Application.ScreenUpdating = True
End Sub
选项显式
子测试()
Application.ScreenUpdating=False
Dim arr(),i作为长,dict作为对象
Set dict=CreateObject(“Scripting.Dictionary”)

对于工作表(“表3”),我在表3中没有得到结果。我是否需要为CreateObject(“Scripting.Dictionary”)设置任何内容?arr中似乎没有输入值。我还注意到arr设置为一个范围(“F1:K6”),G:J列中有数据,这会影响结果的唯一性吗?您需要将范围设置为数据所在的位置。你说你想要F列和K列不?这将成为从F:K读取的数组的第1列和第6列。完整范围为A1:N100。公司在F列,工作在K列。我想提取F列和K列的唯一组合记录。但如果有重复,你会保留哪一个?我打算处理这些,但理想情况下L列中有一个数字,M列为空,如果满足这些条件,请选择H列中日期最早的记录。
Option Explicit
Sub TEST()
    Application.ScreenUpdating = False
    Dim arr(), i As Long, dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    With Worksheets("Sheet3")                    '<==Change as required
        arr = .Range("F1:K6").Value
        For i = LBound(arr, 1) To UBound(arr, 1)
            dict(arr(i, 1) & "," & arr(i, 6)) = 1
        Next
    End With

    Dim key As Variant, rowCounter As Long
    For Each key In dict.keys
        rowCounter = rowCounter + 1
        Worksheets("Sheet2").Cells(rowCounter + 1, 1).Resize(1, 2) = Split(key, ",")  '<== Change output sheet as required
    Next
    Application.ScreenUpdating = True
End Sub