我试图弄清楚如何使用VBA或excel公式执行以下任务:从包含一些值的两列开始,我想在第三列中提取每个元素,其中包含少于或等于的字符数3.第3列应包含长度< = 3按字母顺序排列的所有值。
例如,如果我们有:
Car Body
Sun Sun
Bee Share
Bath Spot
第3列应包含
Bee
Car
Sun
有人知道我该怎么办?我尝试了高级过滤选项,但在指示单词的长度时,我没有设法将两个不同的列作为输入。
答案 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
此词典可以提取唯一身份:
答案 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