Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 VBA中查找唯一值_Excel_Vba - Fatal编程技术网

在拆分范围excel VBA中查找唯一值

在拆分范围excel VBA中查找唯一值,excel,vba,Excel,Vba,我在excel中创建了一个动态搜索,最终得到了一个分割范围(例如,[A4:D4,A6:D6,A8:D8])。我想提取此拆分范围中每列的唯一值,然后将它们复制到新工作表中。我见过许多寻找唯一值的解决方案,但没有一个能够处理像这样的分割范围。 谢谢 到目前为止我已经完成的代码(给我一个错误): 尺寸i为长,j为变型 j=dbws.Application.Transpose(“$A$3:$D$3,$A$6:$D$6,$A$9:$D$9”)”您可以使用字典字典: Option Explicit Publ

我在excel中创建了一个动态搜索,最终得到了一个分割范围(例如,[A4:D4,A6:D6,A8:D8])。我想提取此拆分范围中每列的唯一值,然后将它们复制到新工作表中。我见过许多寻找唯一值的解决方案,但没有一个能够处理像这样的分割范围。 谢谢

到目前为止我已经完成的代码(给我一个错误):

尺寸i为长,j为变型

j=dbws.Application.Transpose(“$A$3:$D$3,$A$6:$D$6,$A$9:$D$9”)”您可以使用字典字典:

Option Explicit
Public Sub CopyUniqueValues()
    Dim unionRng As Range, rng As Range, rng2 As Range, dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    Set unionRng = Union([A4:D4], [A6:D6], [A8:D8])
    Application.ScreenUpdating = False

    For Each rng In unionRng.Areas
        For Each rng2 In rng.Cells
            If Not dict.exists(rng2.Column) Then
                dict.Add (rng2.Column), CreateObject("Scripting.Dictionary")
                dict(rng2.Column).Add rng2.Value, 1
            Else
                If Not dict(rng2.Column).exists(rng2.Value) Then
                    dict(rng2.Column).Add rng2.Value, 1
                End If
            End If
        Next rng2
    Next rng

    Dim dictOutput As Object, key1 As Variant, key2 As Variant
    Set dictOutput = CreateObject("Scripting.Dictionary")

    For Each key1 In dict.keys
        dictOutput.Add key1, dict(key1).keys
    Next
    With Worksheets("Sheet2")
         For Each key1 In dictOutput.keys
             .Columns(key1).Range("A1").Resize(UBound(dictOutput(key1)) + 1, 1) = Application.WorksheetFunction.Transpose(dictOutput(key1))
         Next key1
    End With
    Application.ScreenUpdating = True
End Sub

数据:

| 1 | 1 | 10 | 11 |
| 1 | 2 | 10 | 12 |
| 1 | 3 | 10 | 13 |
| 1 | 4 | 10 | 14 |
| 1 | 5 | 10 | 15 |


数据集:

| 1 | 1 | 10 | 11 |
| 1 | 2 | 10 | 12 |
| 1 | 3 | 10 | 13 |
| 1 | 4 | 10 | 14 |
| 1 | 5 | 10 | 15 |

@y-pel:我投了否决票/投票关闭,因为您没有包含a,它看起来像,而且看起来像是完成了。欢迎来到堆栈溢出:请阅读,然后编辑您的问题,以包含代码、预期行为以及错误。。。然后我们可以试着help@y-谢谢你编辑你的问题,包括代码。请告诉我们哪行代码给出了错误,错误是什么?您是否遇到arun时间错误、代码行为或结果方面的问题?太棒了!这很好用。我调用了包含统一范围的函数,因此我将“Set unionRng=Union([A4:D4],[A6:D6],[A8:D8])”更改为“Set unionRng=myRange”。非常感谢你的帮助!很高兴它有帮助:-)