Excel:从两列中提取字母顺序排列的唯一不同列表

时间:2018-05-22 11:30:19

标签: excel excel-vba vba

我试图弄清楚如何使用VBA或excel公式执行以下任务:从包含一些值的两列开始,我想在第三列中提取每个元素,其中包含少于或等于的字符数3.第3列应包含长度< = 3按字母顺序排列的所有值。

例如,如果我们有:

Car     Body
Sun     Sun
Bee     Share
Bath    Spot

第3列应包含

Bee 
Car 
Sun

有人知道我该怎么办?我尝试了高级过滤选项,但在指示单词的长度时,我没有设法将两个不同的列作为输入。

3 个答案:

答案 0 :(得分:3)

怎么样:

Sub MAIN()
    Dim it As Range, r As Range, x0
        With CreateObject("scripting.dictionary")
            For Each it In Range("A1:B4")
                If Len(it.Value) <= 3 Then
                    x0 = .Item(it.Value)
                End If
            Next it

            Set r = Range("C1").Resize(.Count, 1)
            r.Value = Application.Transpose(.Keys)
            r.Sort [C1], 1
        End With
End Sub

此词典可以提取唯一身份:

enter image description here

答案 1 :(得分:1)

试试这个:

Sub foo()
    Dim c As Range
    Dim cIn As Range
    Dim cOut As Range
    Dim iLen As Integer

    Set cIn = ActiveSheet.Range("A1:B4")
    Set cOut = ActiveSheet.Range("D1")
    iLen = 3

    With CreateObject("scripting.dictionary")
        For Each c In cIn
            If Len(c.Value) <= iLen Then .Item(c.Value) = c.Value
        Next c
        cOut.Resize(.Count) = Application.Transpose(.Keys)
        cOut.Resize(.Count).Sort Key1:=cOut, Order1:=xlAscending, Header:=xlNo
    End With
End Sub

答案 2 :(得分:0)

这是一个通用公式,因此更容易让其他人修改。

您可以使用(int**)轻松删除重复项,并使用您自己的示例中的.RemoveDuplicates内置方法按字母顺序排序

.Sort

显然,你的(表)范围开始A1