- 帖子
- 262
- 主題
- 8
- 精華
- 0
- 積分
- 280
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- Office 2007
- 閱讀權限
- 20
- 性別
- 男
- 來自
- HK
- 註冊時間
- 2015-8-11
- 最後登錄
- 2025-3-24

|
5#
發表於 2019-4-23 12:31
| 只看該作者
回復 4# zheng211016
Sub zz()
Dim s$, a(), m&, k&, i&
[c1].CurrentRegion.Offset(1, 0).ClearContents
s = [a1].Value
m = Len(s)
ReDim a(1 To m)
For i = 1 To m
a(i) = Mid(s, i, 1)
Next i
ReDim b(1 To 2 ^ m - 1, 1 To 3)
k = 0: Call recursive(a, m, k, "", 1, b)
[c2].Resize(UBound(b), UBound(b, 2)) = b
[c2].Resize(UBound(b), UBound(b, 2)).Sort key1:=[e2], key2:=[d2], key3:=[c2]
[c2].CurrentRegion.Offset(0, 1).Resize(, 2).Clear
End Sub
Sub recursive(a, m, k, s$, n&, b)
Dim i&, j&, ss$, c(), t&
For j = 0 To 1
If j Then ss = a(n) Else ss = ""
If n < m Then
Call recursive(a, m, k, IIf(ss = "", s, ss & s), n + 1, b)
Else
If Len(ss & s) Then
k = k + 1: b(k, 1) = IIf(ss = "", s, ss & s)
ReDim c(1 To Len(b(k, 1)))
t = 0
For i = UBound(c) To 1 Step -1
t = t + 1
c(i) = Mid(b(k, 1), t, 1)
Next
b(k, 1) = Join(c, "")
b(k, 2) = Len(b(k, 1))
b(k, 3) = Left(b(k, 1), 1)
End If
End If
Next j
End Sub |
|