从多到少排序
原数据一个区域
结果6个区域
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2016-05-05
Sub xx()
Dim d As Object, c As Range
Set d = CreateObject("scripting.dictionary")
Set c = [b5:u20]
n = c.Count
For i = 1 To n
k = len(c.Item(i))
for j =1 to k
x=mid(c.Item(i),j,1)
d(x) = d(x) + 1
next
Next
k = d.keys
t = d.items
ReDim a(0 To UBound(k))
For i = 0 To UBound(a)
a(i) = i
Next
For i = 1 To UBound(a)
For j = UBound(a) To i Step -1
If t(a(j)) > t(a(j - 1)) Then
tmp = a(j)
a(j) = a(j - 1)
a(j - 1) = tmp
End If
Next
Next
Set c = [b2]
For i = 0 To UBound(a)
c.Offset(0, i) = k(a(i))
c.Offset(1, i) = t(a(i)) & "次"
Next
End Sub本回答被提问者和网友采纳
Dim d As Object, c As Range
Set d = CreateObject("scripting.dictionary")
Set c = [b5:u20]
n = c.Count
For i = 1 To n
k = len(c.Item(i))
for j =1 to k
x=mid(c.Item(i),j,1)
d(x) = d(x) + 1
next
Next
k = d.keys
t = d.items
ReDim a(0 To UBound(k))
For i = 0 To UBound(a)
a(i) = i
Next
For i = 1 To UBound(a)
For j = UBound(a) To i Step -1
If t(a(j)) > t(a(j - 1)) Then
tmp = a(j)
a(j) = a(j - 1)
a(j - 1) = tmp
End If
Next
Next
Set c = [b2]
For i = 0 To UBound(a)
c.Offset(0, i) = k(a(i))
c.Offset(1, i) = t(a(i)) & "次"
Next
End Sub本回答被提问者和网友采纳
第2个回答 2015-07-02
应该是对象属性搞错了。
第3个回答 2015-07-03
不用vba也可以实现,为什么用vba。
第4个回答 2015-07-03
excel vba搞定没 我可以做