|
本帖最后由 蓝天一片云 于 2012-5-12 13:26 编辑
将A列文字变成C列文字
变化规则
1.6个文字为一组将A列文字重新排列,第7个文字和第1个文字相同,第8个文字和第2个文字相同,第9个文字和第3个文字相同,以此类推.有相同的文字时必须对应上一组文字.(不够6个时插入空行,输入数字1)
2.没有相同文字时可随意排列.
- Sub justT()
- Dim D As New Dictionary, Arr, I&, K&, j As Byte
- Dim Ar(1 To 60000, 1 To 1), Ar1, Ar2, M&, N&
- Arr = Range([a1], [a1].End(4)).Value
- For I = 1 To UBound(Arr)
- D(Arr(I, 1)) = D(Arr(I, 1)) + 1
- Sub justT()
- Dim D As New Dictionary, Arr, I&, K&, j As Byte
- Dim Ar(1 To 60000, 1 To 1), Ar1, Ar2, M&, N&, U As Byte
- Arr = Range([a1], [a1].End(4)).Value
- For I = 1 To UBound(Arr)
- D(Arr(I, 1)) = D(Arr(I, 1)) + 1
- Next I
- Ar1 = D.Keys: Ar2 = D.Items
- For I = 0 To UBound(Ar1) Step 6
- M = 0
- If UBound(Ar1) - I < 5 Then
- U = (UBound(Ar1) + 1) Mod 6
- Else
- U = 6
- End If
- For j = 0 To U - 1
- If Ar2(I + j) > M Then M = Ar2(I + j)
- Next j
- For N = 1 To M
- For j = 0 To U - 1
- K = K + 1
- If Ar2(I + j) < N Then
- Ar(K, 1) = 1
- Else
- Ar(K, 1) = Ar1(I + j)
- End If
- Next j, N
- Next I
- Range([b1], [b1].End(4)).ClearContents
- [b1].Resize(K, 1) = Ar
- Set D = Nothing
- MsgBox "´¦ÀíÍê±Ï£¬ÇëºËʵ£¡"
- End Sub
复制代码
在B列生成的结果,请看附件是否与你的要求相符。如果最后不足六个,只循环不足部分,不会以1进行填充。
数据排列512.rar
(10.73 KB, 下载次数: 58)
|
|